csharptutorial.hu

Egyszeresen láncolt lista

Egy ilyen listában egy darab mutató jelöli a lista rákövetkező elemét. Ha ismerjük a lista legelső elemét (lista feje), akkor abból elindulva a mutatók segítségével végig járhatjuk a listában tárolt elemeket. A lista legutolsó elemének mutatójának értéke NULL, ez jelzi, hogy tovább nem tudunk haladni a listában. Láncolt lista esetén általában egyszeresen láncolt listára gondolunk.

Csomopont osztály: Az adatot (Adat) és a következő elemre mutató referenciát (Kovetkezo) tartalmazza.
LancoltLista osztály: Tartalmazza a listához szükséges főbb műveleteket:
    Hozzaad: Új elemet ad a lista végéhez.
    Torol: Törli a listából a megadott adatot tartalmazó elemet.
    Kiir: Kiírja a lista elemeit a konzolra.

Program osztály: Teszteli a fenti műveleteket, létrehozza a listát, hozzáad elemeket, töröl egy létező és egy nem létező elemet, majd kiírja a tartalmát.


Kétszeresen láncolt lista
Kétszeresen láncolt lista esetén a 2db hivatkozás (zöld és sárga) van egy-egy csomópontban, az egyik az előző, a másik a következő csomópontra mutat. C#-ban kétszeresen láncolt listák vannak. Hasonlóan, mint a listák, szintén osztályból vannak létrehozva és ezért referencia típus, természetesen referencia másolás történik értékadásnál.

Mint a listák esetében is a LinkedList beírása után a <> jelek közé kerül a láncolt listák típusa és a megszokott név, egyenlőségjel a new operátor, valamint újra a LinkedList és el ne felejtsük a zárójeleket!

Ezután a LinkedList.AddLast(érték) metódussal tudunk a listánk végére beszúrni egy elemet, vagy például az AddFirst(érték) metódussal pedig a lista első helyére.

A láncolt listák fontos metódusai

LinkedList.RemoveLast / First: Törli a láncolt lista utolsó/első elemét.

LinkedListNode<T> = LinkedList.Last/First. Visszaadja egy adott listában szereplő első vagy utolsó csomópontot, amelyben megtalálhatjuk a következő csomópontra mutató hivatkozást.

A LinkedList<T> objektumban minden csomópont LinkedListNode<T> típusú. Mivel a LinkedList<T> kétszeresen kapcsolódik, minden csomópont előre mutat a következő csomópontra, és visszafelé az előző csomópontra.

LinkedList.AddAfter(LinkedListNode, érték) / AddBefore: Egy adott listacsomópont mögé vagy elé szúr egy másik csomópontot, amelyben a megadott érték szerepel, és az új adat beépül a láncolt lista szerkezetébe.

LinkedListNode<T> = LinkedList.Find(keresett érték): Egy LinkedList-ben visszaadja a megadott értékhez tartozó csomópontot.


Csomópontok - LinkedListNode
Egy listából létrehozhatunk egy-egy csomópontot, melyben az adott csomóponthoz tartozó érték és a következő csomópontra való hivatkozás van. A következő csomópontra való ugráshoz a .Next metódust kell használnunk, hogy visszafele közlekedjünk, pedig a .Previous metódust kell használnunk. A .Value metódus az adott csomópontban eltárolt adatot adja vissza. Mivel tudjuk, hogy a láncolt listák utolsó, illetve első eleme null értékú, így egy while ciklussal is végig tudunk menni az adott láncolt listán, a léptetésről a Next gondoskodik.