Egyirányban láncolt lista

Slides:



Advertisements
Hasonló előadás
Keresés a számítógépes katalógusokban
Advertisements

Sor láncolt ábrázolással
Nevezetes algoritmusok
Miskolci Egyetem Informatikai Intézet Általános Informatikai Tanszé k Pance Miklós Adatstruktúrák, algoritmusok előadásvázlat Miskolc, 2004 Technikai közreműködő:
ADATBÁZISOK.
C++ programozási nyelv Gyakorlat hét
Adatbázis-kezelés.
Tömbök C#-ban.
Online Katalógus aleph.nyf.hu.
Adatszerkezetek Az adatokat két fő csoportra oszthatjuk: egyszerű és összetett adatok.  Az egyszerű adatot egy érték jellemez, tovább nem bontható. (szám,
Illés Tibor – Hálózati folyamok
Algebrai struktúrák 1.
4. VÉGES HALMAZOK 4.1 Alaptulajdonságok
Kétértékűség és kontextusfüggőség Kijelentéseink igazak vagy hamisak (mindig az egyik és csak az egyik) Kijelentés: kijelentő mondat (tartalma), amivel.
Dinamikus tömbök.
KOVÁCS DÁVID. ALAPFOGALMAK Adatbázis: Olyan adatgyűjtemény, amely egy adott feladathoz kapcsolódó adatokat szervezett módon tárolja, és biztosítja az.
16. Tétel. Adatbázis: Olyan adatgyűjtemény, amely egy adott feladathoz kapcsolódó adatokat szervezett módon tárolja, és biztosítja az adatokhoz való hozzáférést,
Algoritmusok Az algoritmus fogalma:
4. előadás (2005. március 8.) Pointerek Pointer aritmetika
Programozás II. 3. Gyakorlat C++ alapok.
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás II. 6. Gyakorlat const, static, dinamikus 2D.
A verem működése fpga-n
3. LOGIKAI ADATSZERKEZETEK
Algoritmizálás Göncziné Kapros Katalin humaninformatika.ektf.hu.
Miskolci Egyetem Informatikai Intézet Általános Informatikai Tanszé k Pance Miklós Adatstruktúrák, algoritmusok előadásvázlat Miskolc, 2004 Technikai közreműködő:
Miskolci Egyetem Informatikai Intézet Általános Informatikai Tanszé k Pance Miklós Adatstruktúrák, algoritmusok előadásvázlat Miskolc, 2004 Technikai közreműködő:
Miskolci Egyetem Informatikai Intézet Általános Informatikai Tanszé k Pance Miklós Adatstruktúrák, algoritmusok előadásvázlat Miskolc, 2004 Technikai közreműködő:
LDinamikus tömbök, kétdimenziós tömbök Alkalmazott Informatikai Tanszék MŰSZAKI INFORMATIKA dr.Dudás László 21./0. lVektorok létrehozása futásidőben, dinamikusan.
ADATBÁZISOK
Elektronikus levelezés
Lineáris egyenletrendszerek (Az evolúciótól a megoldáshalmaz szerkezetéig) dr. Szalkai István Pannon Egyetem, Veszprém /' /
Nevezetes algoritmusok Beszúrás Van egy n-1 elemű rendezett tömbünk. Be akarunk szúrni egy n-edik elemet. Egyik lehetőség, hogy végigszaladunk a tömbön,
Anyagadatbank c. tárgy gyakorlat Féléves tematika Adatbázis alapfogalmak, rendszerek Adatmodellek, adatbázis tervezés Adatbázis műveletek.
Lineáris algebra.
Listák, Vermek és Várakozási Sorok
Listák, Vermek és Várakozási Sorok. Listák Pl: Kirándulók listája Bevásárló lista Alma Kenyér Krumpli Szappan Mosópor Bevásárló lista.
Struktúra nélküli adatszerkezetek
Adatszerkezetek 1. előadás
Kulcstranszformációs táblázat
Speciális Listák: Sor A sor adatszerkezet olyan speciális lista, amelyet a műveletei definiálnak. 1. ACCESS HEAD 3. POP itt GET-nek nevezzük 5. INJECT.
Hierarchikus lista Kétféle értelemezése van:
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
Készítette: Rummel Szabolcs Elérhetőség:
11. tétel Adatbázis táblái közti kapcsolatok optimalizálása
Rekordok Dinamikus tárkezelés és pointerek Dinamikusan láncolt listák
Adatbázis kezelés.
A Neumann-elvek 3. ÓRA.
Adatbázis-kezelés.
SZÉLESSÉGI BEJÁRÁS Gréczy Ákos – JKR7ZR. MESE Van egy középkori kisváros, ahol az utcai lámpákat egy korosodó lámpagyújtogató ember gyújtja fel. Egyik.
Egyenesvonalú (lineáris) adatszerkezetek
Adatbázisok tervezése, megvalósítása és menedzselése
BINÁRIS FA Definició: A fa olyanösszefüggő gráf, amelyben nincs kör
Gráfok ábrázolása teljesen láncoltan
Adatbáziskezelés. Adat és információ Információ –Új ismeret Adat –Az információ formai oldala –Jelsorozat.
Fórum használata A fórum főoldala alapállapotban.
Horváth Bettina VZSRA6.  Célja: Az eljárás célja egy véges gráf összes csúcsának bejárása a kezdőcsúcstól való távolságuk szerinti növekvő sorrendben.
Algoritmizálás, adatmodellezés
Bináris kereső fák Itterátorok.
Objektum orientált programozás
Bucket sort avagy lineáris idejű rendezés. Pszeudo kód n hosszú L listára for i = 1..n If B[L[i]] != üres Akkor [L[i] Beszúrásos rendezéssel B[L[i]]-be.
Diszjunkt halmazok adatszerkezete A diszjunkt halmaz adatszerkezet diszjunkt dinamikus halmazok S={S 1,…,S n } halmaza. Egy halmazt egy képviselője azonosít.
Algoritmusok és adatszerkezetek
Memóriakezelés feladatok Feladat: 12 bites címtartomány. 0 ~ 2047 legyen mindig.
Adatbázisszintű adatmodellek
Bevezetés Adatbázisok használata. Mi is az adatbázis? Az adatbázisok ma már az élet számos területén alapvető fontossággal bírnak (Google, Amazon, Flickr,
Algoritmusok és Adatszerkezetek I.
Dinamikus adatszerkezetek
Algoritmusok és Adatszerkezetek I.
Algoritmusok és Adatszerkezetek I.
Cache példák 2019 (IMSC).
Előadás másolata:

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. 23:06:33

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. 23:06:33

Egyirányban láncolt lista: Létrehozás A fejmutató létrehozása, és feltöltése a NIL értékkel. Ezzel létrejött egy üres egyirányban láncolt lista. 23:06:33

Egyirányban láncolt lista: Bővítés (az elején) Tárhelyet foglalunk az új elem számára A tárhely (új listaelem) adat részébe beírjuk a tárolandó elem értékét. 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.) 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 23:06:33

? adat2 adatn adat1 Uj adat Uj adat adat2 adatn adat1 Uj adat Fej TMP 1 & 2 3 adat2 adatn adat1 Fej 4 Uj adat TMP 23:06:33

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: Ha a lista üres (fejmutató==NIL), az algoritmus véget ért. 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. 23:06:33

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. 23:06:33

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.) 23:06:33

Egyirányban láncolt lista: Feldolgozás A feldogozásnak minden esetben a keresés vagy a bejárás az alapja. 23:06:33

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.) 23:06:33

Egyirányban láncolt lista: adat2 adat1 adatn Fej Ciklikus lista: adat2 adat1 adatn Fej 23:06:33

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. 23:06:33

Egy irányban láncolt lista: adat2 adat1 adatn Fej Két irányban láncolt lista: adat2 adat1 adatn Fej Vége 23:06:33

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. 23:06:33

Multilista (1): X 2 Betű Szám G 7 K 9 23:06:33

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. 23:06:33

Multilista (2): Abc Def Qwe 4.érték 5.érték Def Def Abc Def Abc Qwe 23:06:33

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 23:06:33

Multilista (3): 1 Adat1 1 Adat2 1 Adat4 1 Adat6 1 Adat3 1 Adat5 Fej 1 Adat4 1 Adat6 1 Adat3 1 Adat5 23:06:33

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. 23:06:33

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 23:06:33

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) Mutató értékadások figyelése Már nem hivatkozott tárhelyek automatikus felismerése 23:06:33

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ő 23:06:33

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 23:06:33