Láncolt listák Témakörök. Lista alapfogalmak

Hasonló dokumentumok
Láncolt listák. PPT 2007/2008 tavasz.

Láncolt Listák. Adat1 Adat2 Adat3 ø. Adat1 Adat2 ø Adat3

Láncolt listák. Egyszerű, rendezett és speciális láncolt listák. Programozás II. előadás. Szénási Sándor

Egyirányban láncolt lista

Előfeltétel: legalább elégséges jegy Diszkrét matematika II. (GEMAK122B) tárgyból

Algoritmusok és adatszerkezetek gyakorlat 06 Adatszerkezetek

Összetett programozási tételek Rendezések Keresések PT egymásra építése. 10. előadás. Programozás-elmélet. Programozás-elmélet 10.

Algoritmusok és adatszerkezetek I. 4. előadás

Adatszerkezetek Adatszerkezet fogalma. Az értékhalmaz struktúrája

Adatszerkezetek 1. Dr. Iványi Péter

PROGRAMOZÁSI TÉTELEK

10. előadás Speciális többágú fák

Információk. Ismétlés II. Ismétlés. Ismétlés III. A PROGRAMOZÁS ALAPJAI 2. Készítette: Vénné Meskó Katalin. Algoritmus. Algoritmus ábrázolása

9. előadás. Programozás-elmélet. Programozási tételek Elemi prog. Sorozatszámítás Eldöntés Kiválasztás Lin. keresés Megszámolás Maximum.

A programozás alapjai előadás. [<struktúra változó azonosítók>] ; Dinamikus adatszerkezetek:

Algoritmizálás, adatmodellezés tanítása 1. előadás

Egyszerű programozási tételek

Programozás alapjai II. (7. ea) C++ Speciális adatszerkezetek. Tömbök. Kiegészítő anyag: speciális adatszerkezetek

Speciális adatszerkezetek. Programozás alapjai II. (8. ea) C++ Tömbök. Tömbök/2. N dimenziós tömb. Nagyméretű ritka tömbök

Fák Témakörök. Fa definíciója. Rekurzív típusok, fa adatszerkezet Bináris keresőfa, bejárások Bináris keresőfa, módosítás B-fa

Programozás alapjai II. (7. ea) C++

B-fa. Felépítés, alapvető műveletek. Programozás II. előadás. Szénási Sándor.

Táblázatok fontosabb műveletei 1

Programozás alapjai 9. előadás. Wagner György Általános Informatikai Tanszék

Adatszerkezetek 1. előadás

Hatékonyság 1. előadás

Buborékrendezés: Hanoi Tornyai: Asszimptótikus fv.ek: Láncolt ábrázolás: For ciklussal:

Adatszerkezetek. Nevezetes algoritmusok (Keresések, rendezések)

Haladó rendezések. PPT 2007/2008 tavasz.

Adatszerkezetek I. 7. előadás. (Horváth Gyula anyagai felhasználásával)

Bánsághi Anna 2014 Bánsághi Anna 1 of 68

Rekurzió. Dr. Iványi Péter

A lista adatszerkezet A lista elemek egymásutániságát jelenti. Fajtái: statikus, dinamikus lista.

Struktúra nélküli adatszerkezetek

Fejlett programozási nyelvek C++ Iterátorok

A számítástudomány alapjai. Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem

Alkalmazott modul: Programozás. Programozási tételek, rendezések. Programozási tételek Algoritmusok és programozási tételek

Programozás I. Egyszerű programozási tételek. Sergyán Szabolcs

end function Az A vektorban elõforduló legnagyobb és legkisebb értékek indexeinek különbségét.. (1.5 pont) Ha üres a vektor, akkor 0-t..

Objektumorientált Programozás VI.

Mutatók és címek (ism.) Programozás alapjai C nyelv 8. gyakorlat. Indirekció (ism) Néhány dolog érthetőbb (ism.) Változók a memóriában

Tartalom Keresés és rendezés. Vektoralgoritmusok. 1. fejezet. Keresés adatvektorban. A programozás alapjai I.

Programozás I gyakorlat

Gráfok 1. Tárolási módok, bejárások. Szoftvertervezés és -fejlesztés II. előadás. Szénási Sándor

Programozás I. Egyszerű programozási tételek. Sergyán Szabolcs

Keresés és rendezés. A programozás alapjai I. Hálózati Rendszerek és Szolgáltatások Tanszék Farkas Balázs, Fiala Péter, Vitéz András, Zsóka Zoltán

Interfészek. PPT 2007/2008 tavasz.

15. tétel. Adatszerkezetek és algoritmusok vizsga Frissült: január 30.

Adatszerkezetek és algoritmusok

6. LISTÁK ábra. A lista absztrakt adatszerkezet (ADS)

ELEMI PROGRAMOZÁSI TÉTELEK

Rekurzió. (Horváth Gyula és Szlávi Péter előadásai felhasználásával)

Adatszerkezetek I. 8. előadás. (Horváth Gyula anyagai felhasználásával)

Programozás alapjai C nyelv 8. gyakorlat. Mutatók és címek (ism.) Indirekció (ism)

Algoritmuselmélet 2. előadás

Adatszerkezetek 2. Dr. Iványi Péter

Algoritmizálás, adatmodellezés tanítása 1. előadás

Objektum Orientált Programozás VII.

Tartalomjegyzék. Köszönetnyilvánítás. 1. Az alapok 1

Algoritmizálás, adatmodellezés tanítása 7. előadás

Funkcionálanalízis. n=1. n=1. x n y n. n=1

file:///d:/okt/ad/jegyzet/ad1/b+fa.html

konvergensek-e. Amennyiben igen, számítsa ki határértéküket!

Algoritmizálás és adatmodellezés tanítása 2. előadás

Algoritmizálás. Horváth Gyula Szegedi Tudományegyetem Természettudományi és Informatikai Kar

Algoritmuselmélet. 2-3 fák. Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem. 8.

Fa (Tree): csomópontok (nodes) halmaza, amelyeket élek (edges) kötnek össze, és teljesülnek az alábbi feltételek:

Shannon és Huffman kód konstrukció tetszőleges. véges test felett

Táblázatkezelés Excel XP-vel. Tanmenet

- Levelek: operandusok - Csomópontok: operátorok. Fenti kifejezés: (x+ (y 10)) * (6 / z) Bináris Keresőfa (BST) Példa bináris keresőfára.

Rendezések. Összehasonlító rendezések

Már megismert fogalmak áttekintése

Nagy Gábor compalg.inf.elte.hu/ nagy

Adatszerkezetek 7a. Dr. IványiPéter

Alkalmazott modul: Programozás. Programozási tételek, rendezések Giachetta Roberto

17. előadás: Vektorok a térben

Rekurzív algoritmusok

Ugrólisták. RSL Insert Example. insert(22) with 3 flips. Runtime?

Felvételi tematika INFORMATIKA

Programozási tételek. PPT 2007/2008 tavasz.

FUNKCIONÁLIS PROGRAMOZÁS

Adatszerkezetek Tömb, sor, verem. Dr. Iványi Péter

22. GRÁFOK ÁBRÁZOLÁSA

A 2016/2017 tanévi Országos Középiskolai Tanulmányi Verseny első forduló javítási-értékelési útmutató. INFORMATIKA II. (programozás) kategória

32. A Knuth-Morris-Pratt algoritmus

5. SOR. Üres: S Sorba: S E S Sorból: S S E Első: S E

van neve lehetnek bemeneti paraméterei (argumentumai) lehet visszatérési értéke a függvényt úgy használjuk, hogy meghívjuk

A félév során előkerülő témakörök

Generikus osztályok, gyűjtemények és algoritmusok

Programozási segédlet

Diszkrét matematika 2.C szakirány

Kép mátrix. Feladat: Pap Gáborné-Zsakó László: Algoritmizálás, adatmodellezés 2/35

Algoritmusok és adatszerkezetek I. 1. előadás

Alkalmazott modul: Programozás 4. előadás. Procedurális programozás: iteratív és rekurzív alprogramok. Alprogramok. Alprogramok.

Táblázatkezelés, Diagramkészítés. Egyéb műveletek

Diszkrét matematika 2. estis képzés

Gráfelméleti feladatok. c f

Bevezetés a programozásba I 3. gyakorlat. PLanG: Programozási tételek. Programozási tételek Algoritmusok

Más szavakkal formálisan:, ahol olyan egész szám, hogy. Más szavakkal formálisan:, ahol olyan egész szám, hogy.

INFORMATIKA javítókulcs 2016

Átírás:

Láncolt listák szenasi.sandor@nik.bmf.hu PPT 2007/2008 tavasz http://nik.bmf.hu/ppt 1 Lista alapfogalmai Egyirányú egyszerű láncolt lista Egyirányú rendezett láncolt lista Speciális láncolt listák Témakörök 2 Lista (list): 0 vagy több elem véges sorozata Ha az elemek mindegyikének azonos a típusa: T, akkor azt mondjuk, hogy a lista típusa: T-k listája A lista (a 1, a 2,, a n ), ahol a i a lista elemei Példák listára (2, 3, 5, 7, 11, 13, 17, 19) (hélium, neon, argon, krypton, xenon, radon) szövegsor: a felépítő karakterek az elemek dokumentum: szövegsorok a listaelemek Lista hossza: az elemek előfordulási száma a listában (az ismétlődéseket is belevesszük) Üres lista (empty): ha a lista hossza 0, (jele: ε) Lista alapfogalmak 3 1

Részlista (sublist): L = (a 1, a 2,, a n ) lista, akkor minden i-re, j-re 1 i j n (a i, a i+1,, a j ). L és ε minden listának részlistája Részsorozat (subsequence): Egy L = (a 1, a 2,, a n ) listából kapjuk, ha 0, vagy több elemet elhagyunk a listából. A megmaradt elemeknek ugyanolyan sorrendben kell a részsorozatban szerepelniük. L és ε minden listának részsorozata Előtag, utótag (prefix, suffix): az előtag olyan részlista, ami az első elemmel, az utótag az utolsó elemmel végződik. ε minden listának előtagja és utótagja Elem pozíciója: hányadik helyen szerepel a listában, használjuk az előző, a következő jelzőket is Lista alapfogalmak 4 Láncolt lista: A láncolt lista olyan adatszerkezet, amelynek minden eleme tartalmaz egy hivatkozást egy másik, ugyanolyan típusú elemre. Tárgyalt altípusok: Egyszeresen láncolt lista Rendezett láncolt lista Láncolt lista strázsa elemekkel Speciális láncolt listák Kétirányú Többszörösen láncolt Ciklikus Láncolt lista definíció 5 Lista alapfogalmai Egyirányú egyszerű láncolt lista Egyirányú rendezett láncolt lista Speciális láncolt listák Témakörök 6 2

Bejárás: Az adatszerkezet valamennyi elemének egyszeri elérése (feldolgozása) Ez a feldolgozás lehet tetszőleges művelet a lista egy elemének a tartalmával. A teljes listára vonatkozó műveleteket így az egyes elemekre külön-külön elvégezhető műveletek sorozatára kell bontani (pl átlagszámítás: összegzés, megszámlálás) Bejárás algoritmusa Eljárás Bejárás(fej) Ciklus amíg p Feldolgozás(p.tart) (Vizsgálandó esetek: üres lista, nem üres lista) Láncolt lista bejárása 7 Keresés: A lista fej ismeretében egy megadott tartalmú elem megkeresése eldönteni, hogy van-e ilyen tartalmú elem ha van, akkor melyik ez az elem Függvény Keresés(fej, mitkeres) Ciklus amíg (p ) és (p.tart mitkeres) van (p ) Ha van akkor Keresés p Függvény vége (Vizsgálandó esetek: üres lista, nincs ilyen elem, van ilyen elem) Keresés a listában 8 Sorozatszámítás lista elemeinek összege lista elemeinek átlaga stb. Eldöntés adott tulajdonságú elem megtalálható a listában? Kiválasztás megadott elem kiválasztása a listából? Keresés lineáris keresés Megszámolás megadott tulajdonságú elemek megszámolása Maximumkiválasztás valamilyen szempont szerinti legnagyobb elem kiválasztása Házi feladat prog. tételek listával 9 3

Lista inicializálása Eljárás Inicializálás(fej) fej Lista elejére új elem beszúrása Eljárás ElejéreBeszúrás(fej, újérték) ElemLétrehozás(uj) uj.tart újérték uj.köv fej fej uj Új elem felvétele 10 Eljárás VégéreBeszúrás(fej, újérték) ElemLétrehozás(uj) uj.tart újérték uj.köv Ha fej = (Vizsgálandó esetek: üres lista, nem üres lista) fej uj Ciklus amíg p.köv p.köv uj Új elem felvétele a lista végére 11 Eljárás MegadottHelyreBeszúrás(fej, n, újérték) ElemLétrehozás(uj) uj.tart újérték Ha (fej = ) vagy (n = 1) akkor uj.köv = fej; fej = uj ; i 2 (Vizsgálandó esetek: üres lista, egyetlen elem, lista elejére, lista közepébe, lista végére) Ciklus amíg (p.köv ) és (i < n) ; i i + 1 uj.köv p.köv p.köv uj Új elem felvétele adott helyre 12 4

Eljárás Törlés(fej, törlendő) ; e Ciklus amíg (p ) és (p.tart törlendő) e p Ha p akkor Ha e = akkor fej = p.köv külöben e.köv = p.köv ElemFelszabadítás(p) Nincs ilyen elem (Vizsgálandó esetek: üres lista, nincs elem, első elem, egyetlen elem, középső elem, utolsó elem) Adott tartalmú elem törlése 13 Az összes elem törlése Eljárás ListaTörlés(fej) Ciklus amíg (fej ) fej fej.köv ElemFelszabadítás(p) (Vizsgálandó esetek: üres lista, nem üres lista) Teljes lista törlése 14 Lista alapfogalmai Egyirányú egyszerű láncolt lista Egyirányú rendezett láncolt lista Speciális láncolt listák Témakörök 15 5

Rendezett láncolt lista: A láncolt lista elemei tartalmuk szerint valamilyen előre definiált rendezési szempont szerint sorrendben helyezkednek el fej A E X Az utólagos rendezés nehézkes, emiatt a lista felépítésekor célszerű rendezni (beszúró rendezés erre alkalmas) Az előzőek kibővítése az alábbiakkal: KeresésRendezettben RendezettBeszúrás Rendezett láncolt lista 16 Keresés rendezett listában Függvény KeresésRendezettben(fej, mitkeres) Ciklus amíg (p ) és (p.tart < mitkeres) van (p ) és (p.tart = mitkeres) Ha van akkor Keresés p Függvény vége (Vizsgálandó esetek: üres lista, nincs ilyen elem, van ilyen elem) Rendezett láncolt lista - keresés 17 Eljárás RendezettBeszúrás(fej, újérték) ElemLétrehozás(uj); uj.tart újérték Ha fej = uj.köv ; fej uj; Ha fej.tart > újérték uj.köv fej; fej uj ; e Ciklus amíg (p ) és (p.tart < újérték) e p; Ha p = uj.köv = ; e.köv = uj uj.köv = p; e.köv = uj üres lista első elem elé utolsó elem mögé két elem közé Rendezett láncolt lista - beszúrás 18 6

Azonos ágak összevonása után Eljárás RendezettBeszúrás(fej, újérték) ElemLétrehozás(uj); uj.tart újérték ; e Ciklus amíg (p ) és (p.tart < újérték) e p; Ha e = akkor uj.köv fej fej uj uj.köv p e.köv uj Rendezett láncolt lista - beszúrás 19 Lista alapfogalmai Egyirányú egyszerű láncolt lista Egyirányú rendezett láncolt lista Speciális láncolt listák Témakörök 20 fej 1 2 3 vége A lánc minden eleme tartalmaz egy hivatkozást a sorban rá következő, illetve a sorban őt megelőző elemre is A lánc végét az utolsó elem következő részének egy kitüntetett értéke jelzi (példákban ) A lánc elejét az első elem előző részének egy kitüntetett értéke jelzi (példákban ) A lánc első elemének címét a listafej tartalmazza (példákban fej változó) A lánc utolsó elemének címét is célszerű tárolni egy külső változóban (vége) Kétirányú láncolt lista 21 7

Előnyei az egyirányú listához képest keresés: Ha van információnk az elem listabeli elhelyezkedéséről (pl. tudjuk, hogy a vége felé helyezkedik el) akkor előnyös lehet törlés: Előnyös, hiszen azonnal elérhetjük a szomszédos elemeket beszúrás: Szintén kihasználható a beláncolás során, hogy közvetlenül elérhető minden elem őt megelőző eleme Hátrányok az egyirányú listához képest nagyobb elemenkénti helyfoglalás (az előző elem címét tartalmazó mező miatt) módosításkor bonyolultabb algoritmusra van szükség, mivel az előző hivatkozást is mindig aktualizálni kell Kétirányú láncolt lista 22 fej1 fej2 1 2 3 fej3 A lánc minden eleme tartalmazza n darab következő elem címet A lánc végét az utolsó elem megfelelő következő részének egy kitüntetett értéke jelzi ( ) A lánc tartalmaz n darab listafejet Műveletei gyakorlatilag megfelelnek az egyszerű láncolt listánál megismertekkel, felfogható n darab független láncolt listaként A tartalmi rész azonban csak egyszer szerepel, emiatt: kisebb helyfoglalás módosításkor egyidőben minden láncban módosul a tartalmi rész (ez nyílván csak akkor előny, ha ez a cél) Többszörösen láncolt lista 23 fej 1 2 3 A lánc minden eleme tartalmazza a következő elem címét, az utolsó elem pedig a elsőre mutat vissza A lánc végét külön nem jelöljük, a bejáró algoritmus felelőssége, hogy észrevegye ha már feldolgozott minden elemet A láncba akár több belépési pont is tárolható A lista lehet egy- illetve kétirányú is Előnyei az egyszerű láncolt listához képest: speciális feladatoknál hasznos (pl. fix méretű sor adatszerkezet) törlés: nincsenek kivételes első és utolsó elemek beszúrás: nincsenek kivételes első és utolsó elemek Ciklikusan láncolt lista 24 8