37 lines
3.2 KiB
Plaintext
37 lines
3.2 KiB
Plaintext
|
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úrszni 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 adatpt adja vissza. mivel tudjuk, hogy a láncolt listák utolsó, illetve első eleme null értékú, így egy while while ciklussal is végig tudunk menni az adott láncolt listán, a léptetésről a Next gondoskodik.
|