GeeksforGeeks
A tömbök az elemeket összefüggő memóriahelyeken tárolják, ami könnyen kiszámítható címeket eredményez a tárolt elemek számára, és ez gyorsabb hozzáférést tesz lehetővé egy adott indexen lévő elemhez. A kapcsolt listák tárolási struktúrája kevésbé merev, és az elemek általában nem egybefüggő helyeken tárolódnak, ezért további címkékkel kell tárolni őket, amelyek a következő elemre való hivatkozást adják meg. Az adattárolási séma e különbsége dönti el, hogy egy adott helyzetben melyik adatszerkezet a megfelelőbb.
A tömb adattárolási sémája
A kapcsolt lista adattárolási sémája
A főbb különbségeket az alábbiakban soroljuk fel: Mivel egy tömbben az adatok csak összefüggő memóriablokkokban tárolhatók, a méretük nem változtatható futásidőben a más adatok felülírásának veszélye miatt. Egy összekapcsolt listában azonban minden csomópont a következőre mutat, így az adatok szétszórt (nem összefüggő) címeken is létezhetnek; ez lehetővé teszi a dinamikus méretet, amely futásidőben változhat.
A következőkben a kapcsolt listák mellett szólnak a szempontok.
(1) A tömbök mérete fix: Tehát előre tudnunk kell az elemek számának felső határát. Emellett általában a kiosztott memória a felhasználástól függetlenül megegyezik a felső határral, és a gyakorlati felhasználás során a felső határt ritkán érjük el.
(2) Egy új elem beillesztése egy elemtömbbe drága, mert helyet kell teremteni az új elemeknek, és a hely megteremtéséhez a meglévő elemeket el kell tolni.
Tegyük fel például, hogy egy id tömbben az azonosítók rendezett listáját tartjuk fenn.
id = .
És ha be akarunk illeszteni egy új, 1005-ös azonosítót, akkor a rendezett sorrend fenntartásához az 1000 utáni összes elemet (kivéve az 1000-et) át kell helyeznünk.
A törlés szintén drága a tömbökkel, amíg nem használunk valamilyen speciális technikát. Például, ha törölni akarjuk az id-ben az 1010-et, akkor mindent, ami 1010 után van, el kell mozgatni.
A kapcsolt lista tehát a következő két előnyt nyújtja a tömbökkel szemben
1) Dinamikus méret
2) Könnyű beszúrás/törlés
A kapcsolt listáknak a következő hátrányai vannak:
1) A véletlenszerű hozzáférés nem megengedett. Az elemekhez az első csomóponttól kezdve szekvenciálisan kell hozzáférnünk. Tehát nem tudunk bináris keresést végezni összekapcsolt listákkal.
2) A lista minden egyes eleméhez extra memóriaterületre van szükség egy mutató számára.
3) A tömbök jobb cache lokalitással rendelkeznek, ami elég nagy különbséget jelenthet a teljesítményben.