Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

1 Egyirányban láncolt lista A tárhely (listaelem) az adatelem értékén kívül egy mutatót tartalmaz, amely a következő listaelem címét tartalmazza. A láncolt.

Hasonló előadás


Az előadások a következő témára: "1 Egyirányban láncolt lista A tárhely (listaelem) az adatelem értékén kívül egy mutatót tartalmaz, amely a következő listaelem címét tartalmazza. A láncolt."— Előadás másolata:

1 1 Egyirányban láncolt lista A tárhely (listaelem) az adatelem értékén kívül egy mutatót tartalmaz, amely a következő listaelem címét tartalmazza. A láncolt lista első elemének címét egy, a láncszerkezeten kívüli mutató, a fejmutató tárolja. A fejmutató nem tartalmaz egyéb adatot a mutatón kívül, így nem része az adatszerkezetnek, csak a hozzáférést biztosítja ahhoz. A láncolt lista végét egy speciális érték, a NIL jelzi. Amennyiben a fejmutató értéke NIL, akkor a lista üres. Ha a fej értéke nem NIL, kötelezően mutat egy tárhelyre, amely tartalmazza a lista első elemét. 19:15:28

2 2 Egyirányban láncolt lista Kedvező a beszúrásos rendezés számára. Előnyös, hogy a módosítási műveletek nem igényelnek adatmozgatást, valamint dinamikusságából következően nem kell előre meghatározni a tárhelyek számát. Nehéz benne keresni. Csak a  teljes,  és rendezett listában a lineáris keresés valósítható meg. 19:15:28

3 3 Egyirányban láncolt lista: Létrehozás 1. A fejmutató létrehozása, és 2. feltöltése a NIL értékkel. Ezzel létrejött egy üres egyirányban láncolt lista. 19:15:28

4 4 Egyirányban láncolt lista: Bővítés (az elején) 1. Tárhelyet foglalunk az új elem számára 2. A tárhely (új listaelem) adat részébe beírjuk a tárolandó elem értékét. 3. A tárhely mutató részébe átmásoljuk a fejmutató értékét. (Most egy ideig egyszerre két mutató is kijelöli a lista eddigi első elemét.) 4. Fejmutatóba beírjuk az új elem tárhelyének címét. A 3. és 4. lépés nem felcserélhető! (Az algoritmusok végrehajtása szekvenciális.) Van még:  Bővítés a lista végén  Bővítés az aktuális elem előtt vagy után 19:15:28

5 5 adat1 adatn adat2 Fej TMP Uj adat ? TMP Uj adat adat1 adatn adat2 Fej TMP Uj adat 1 & :15:29

6 6 Egyirányban láncolt lista: Törlés Bármelyik elem törölhető, de előre meg kell határozni, melyik ez az elem. Ha nem úgy van „megfogalmazva” a feladat, hogy töröld az első elemet, akkor a törlés művelete minden esetben a törlendő elem keresésével kezdődik. Első elem tölése: 1. Ha a lista üres (fejmutató==NIL), az algoritmus véget ért. 2. A fejmutató új értéke legyen, a fej által mutatott elem mutató részében tárolt érték (a következő elem címe). Ezután a lista egy elemmel kevesebbet tartalmaz. 19:15:29

7 7 Egyirányban láncolt lista: Csere Egyirányban láncolt listában a csere minden esetben kereséssel kezdődik. Ha a keresés sikeres, a megtalált értéket a cserélendő új értékkel felülírjuk. 19:15:29

8 8 Egyirányban láncolt lista: Rendezés Egyirányban láncolt listában lehet ugyan rendezni, de nem szokás. Helyette, ha fontos a lista rendezettsége (pl. mert szeretnénk teljes keresés helyett lineáris keresést alkalmazni), akkor a bővítés műveletét módosítjuk olyan módon, hogy a rendezett egyirányban láncolt lista a bővítés közben megőrizze rendezettségét. (Beszúró rendezés képezi az alapját a rendezett lista bővítésének.) 19:15:29

9 9 Egyirányban láncolt lista: Feldolgozás A feldogozásnak minden esetben a keresés vagy a bejárás az alapja. 19:15:29

10 10 Ciklikus lista Az egyirányban láncolt listának a feldolgozást segítő módosítása. Abban különbözik az egyirányban láncolt listától, hogy egyetlen listaelem sem tartalmaz a mutató részében NIL-t. Az utolsó elem mutató része a lista első elemére mutat. Ennek a listának is van fejmutatója, ami az első elemhez való hozzáférést segíti, illetve lehetővé teszi az utolsó elem felismerését, hiszen annak mutató része ugyanazt az értéket tartalmazza, mint a fejmutató. (Mindketten az első elemre mutatnak.) 19:15:29

11 11 adat1 adatn adat2 Fej Egyirányban láncolt lista: Ciklikus lista: adat1 adatn adat2 Fej 19:15:29

12 12 Kétirányban láncolt lista Az adatelemek itt is adat részből és muató részből állnak. DE a mutató rész két mutatót tartalmaz:  Az egyik mutatja -mint eddig- a rákövetkező adatelem tárhelyét,  a másik pedig a megelőző adatelem tárhelyét. Ebben a szerkezetben az adatelemekhez való hozzáférést a fejmutatón kívül még egy vége mutató is segíti. Ez utóbbi az utolsó adatelem tárhelyének címét tartalmazza. (Akár úgy is tekinthetünk rájuk, mint két egyirányban láncolt lista fejmutatóira.) Ebben a szerkezetben egyszerűbb a fizikai törlés, mivel közvetlenül meg tudjuk fogni a törlendő elem megelőzőjét és rákövetkezőjét. 19:15:29

13 13 adat1 adatn adat2 Fej Egy irányban láncolt lista: Két irányban láncolt lista: adat1 adatn adat2 Fej Vége 19:15:29

14 14 Multilista (1) A listaelemek adatrésze összetett, több atomi értéket tartalmaz Mindegyik atomi értékre föl lehet építeni 1-1 láncolt listát Minden tárhely (legalább) annyi muatót tartalmaz, ahány listába szerveztük az elemeket. Annyi fejmutatóra van szükség, ahány listánk van. Minden elem benne van az összes listában. 19:15:29

15 15 Multilista (1): Betű Szám X2 K9 G7 19:15:29

16 16 Multilista (2) Részláncokat hozunk létre. Azok az elemek kerülnek egy részláncba, melyeknek adatrésze megegyezik. Pontosan annyi részlánc van, ahány különböző érték fordul elő az adatelemek között. A részláncok nem fedik át egymást, minden atomi adatelem csak egyetlen részláncban szerepel. Annyi fejmutató létezik, ahány részlánc. 19:15:29

17 17 Multilista (2): Abc Def Qwe 4.érték 5.érték Def Abc Qwe Abc 5.érték Qwe 19:15:29

18 18 Multilista (3) Itt a tárhelyekbe is be lehet építeni listafejeket. Egy listaelem adatrésze vagy tényleges atomi értéket tárol, vagy egy másik láncszerkezet első elemének a címét. Hogy a kettő közül melyiket, azt egy egyetlen biten tárolt információval dönthetjük el. Pl.  0 == > listafej  1 == > tényleges atomi érték 19:15:29

19 19 Multilista (3): Fej 1Adat1 1Adat4 1Adat2 1Adat6 1Adat Adat5 19:15:29

20 20 Folytonos és szétszórt ábrázolás Az egyes absztrakt adatszerkezetek mind folytonos, mind szétszórt módon ábrázolhatóak. DE: a leképezés annál egyszerűbb, minél jobban „illeszkedik” egymáshoz az absztrakt adatszerkezet és a tárolási szerkezet. Az asszociatív adatszerkezetek nagyon jól tárolhatók folytonosan. A hierarchikus és hálós szerkezetek viszont elsősorban szétszórt módon kezelhetőek könnyen. A szekvenciális adatszerkezetek mindkét módon jól kezelhetőek. 19:15:29

21 21 Reprezentáció és Implementáció absztrakt adatszerkezet ->leképezés-> ábrázolás Absztrakt adatszerkezet reprezentációja:  A tárolási mód  Leképezés Absztrakt adatszerkezet implementációja:  reprezentáció  A műveleteket megvalósító algoritmusok Az algoritmusok megadhatóak:  beszélt emberi nyelven  mondatszerű leírással  folyamatábrával  pszeudonyelvvel (gyakorlatokon)  Programozási nyelvven 19:15:29

22 22 Szabad helyek kezelése A memória véges. Az adatszerkezetek elemeit a memóriában tároljuk. == > A memóriával gazdálkodni kell. Ebben az egyik fontos elem, a „felszabaduló” tárhelyek újrahasznosítása. Két alapvető módszer  Kézi (Manual memory management) NEW, …. FREE, …..  Hulladékgyűjtés (Garbage collection) NEW, …. Mutató értékadások figyelése Már nem hivatkozott tárhelyek automatikus felismerése 19:15:29

23 23 Felszabadult helyek nyilvántartása, kezelése Szabad helyek nyilvántartása  A szabad tárhelyeket a lefoglalt memória végére gyűjtjük össze. (Időigényes lehet.)  Minden lefoglalt tárhelyhez hozzárendelünk egy bitet, amely jelzi a foglaltságot (1). (szabad – 0) (Bonyolultabb a kezelés.)  Szabad helyek láncolt listájának megvalósítása  Mindezek kombinációi Új helyek kiosztása  Az első szabad, megfelelő méretű  A legjobban illeszkedő 19:15:29

24 24 Szabad helyek kezelése: Szétszórt ábrázolás Bitsorozatok (Itt a foglaltság mellett a tárhely címét is tárolni kell. Csak elvi lehetőség.) Szabad helyek láncolt listájának megvalósítása  Egyirányban láncolt lista. (azonos méret) Ha nem == > első v. legjobban illeszkedő  Valamely adatszerkezet bővít == > a lista elejéről „adunk neki” tárhelyet.  Valamely adaszerkezet (fizikailag) töröl == > a lista elejére szúrjuk be a felszabaduló tárhelyet Szemét gyűjtögetés  itt is automatikus,  fizikai törlés esetén  jellemzője a hivatkozás figyelés, azaz csak azt a tárhelyet gyűjti, melyre nincs élő hivatkozás 19:15:29


Letölteni ppt "1 Egyirányban láncolt lista A tárhely (listaelem) az adatelem értékén kívül egy mutatót tartalmaz, amely a következő listaelem címét tartalmazza. A láncolt."

Hasonló előadás


Google Hirdetések