Különbség a tömbök és a kapcsolódó listák között

Anonim

Arrays vs Linked Lists

A rétegek a leggyakrabban használt adatszerkezet az elemek gyűjtésének tárolására. A legtöbb programnyelv olyan módszereket kínál, amelyek könnyen kijelölhetik a tömböket és a hozzáférési elemeket a tömbökben. Az összekapcsolt lista, pontosabban az egyesített linkek listája is olyan adatstruktúra, amely elemek gyűjteményének tárolására használható. Ez egy csomópont-sorozattól áll, és minden csomópontnak a szekvencia következő csomópontjára kell hivatkoznia.

Az 1. ábrán látható egy kóddarab, amelyet jellemzően egy tömb értékeinek kijelölésére és hozzárendelésére használnak. A 2. ábra azt mutatja be, hogyan fog kinézni egy tömb a memóriában.

A fenti kód határozza meg azt a tömböt, amely 5 egész számot képes tárolni, és a 0 és 4 közötti indexek segítségével érhető el. Egy tömb egyik fontos tulajdonsága, hogy a teljes tömb egyetlen memóriablokkként van elosztva, és minden elemnek megvan a saját helye a sor. A tömb meghatározása után a mérete rögzített. Tehát ha nem vagy biztos benne, hogy a tömb mérete fordítási időben van, akkor elég nagy méretű tömböt kell meghatároznod ahhoz, hogy biztonságban legyen. De a legtöbb esetben kevesebb elemet fogunk használni, mint amennyit elkülönítettünk. Tehát jelentős mennyiségű memória valójában elpazarolt. Másrészt, ha a "elég nagy tömb" nem elég nagy, a program összeomlik.

Egy összekapcsolt lista a memóriát a saját memóriakártyájába elkülönítve tárja fel elemeire, és az általános struktúrát úgy kapják meg, hogy ezeket az elemeket láncszemként kapcsolják össze. A linkelt lista minden elemének két mezője van, amint azt a 3. ábra mutatja. Az adatmező a tárolt adatokat tárolja, és a következő mező a lánc következő elemére utal. A csatolt lista első eleme a hivatkozott lista fejrészeként van tárolva.

adatok következő

3. ábra: Egy összekapcsolt lista elemei

A 4. ábra három elemből álló összekapcsolt listát mutat be. Minden elem tárolja az adatokat, és az összes elem, az utolsó kivételével, tárol egy hivatkozást a következő elemre. Az utolsó elem nulla értéket tartalmaz a következő mezőben. A lista bármely eleme a fejjel kezdődő és a következő mutató követésével érhető el mindaddig, amíg el nem éri a kívánt elemet.

Annak ellenére, hogy a tömbök és a kapcsolódó listák hasonlóak abban az értelemben, hogy mindkettőt az elemek gyűjtésének tárolására használják, azok a stratégiák miatt különbségek merülnek fel, amelyeket a memória elemeinek elosztására használnak. A tömbök egyetlen elemként osztják a memóriát az összes elemére, és a tömb méretét futásidőben kell meghatározni. Ezáltal a tömbök nem hatékonyak olyan helyzetekben, amikor nem ismeri a tömb méretét fordítási időben. Mivel egy összekapcsolt lista külön felosztja a memóriát elemeihez, nagyon hatékony lenne olyan helyzetekben, amikor nem ismeri a lista méretét a fordítási időben.Az összekapcsolt listában szereplő elemek deklarálása és elérése nem lenne egyenesen előre, mint az indexek elemeinek közvetlen eléréséhez.