2009. november 20.
Bevezet
El z órák anyagainak áttekintése Ismétlés Adatszerkezetek osztályozása Sor, Verem, Lengyelforma Statikus, tömbös reprezentáció Dinamikus, láncolt reprezentáció
El z órák anyagainak áttekintése Szekvenciális adatszerkezetek A szekvenciális adatszerkezet olyan A, R rendezett pár, amelynél az R reláció tranzitív lezártja teljes rendezési reláció (pl. egyszer lista). Szekvenciális adatszerkezetben az egyes adatelemek egymás után helyezkednek el. Az adatok között egy-egy jelleg a kapcsolat: minden adatelem csak egy helyr l érhet el, és az adott elemr l csak egy másik látható. Két kitüntetett elem az els és az utolsó.
El z órák anyagainak áttekintése Szekvenciális adatszerkezetek Ez egy homogén adatszerkezet, azaz azonos típusú véges adatelemek sorozata. Jelölése : L = (a 1, a 2,... a n ) Ha n = 0, akkor L = () az üres lista. A láncolt lista olyan adatszerkezet, amelynek minden eleme tartalmaz egy (vagy több) mutatót (hivatkozást) egy másik, ugyanolyan típusú adatelemre. A lánc els elemének a címét a lista feje tartalmazza. A listafej nem tartalmaz információs részt. A lánc végét az jelzi, hogy az utolsó elemben a rákövetkez elem mutatója üres.
Reprezentáció
ADT Intuitív ADT, ADS Intuitív ADT, ADS szint: Végiglépkedhetünk az elemeken egymás után. Beszúrhatunk, törölhetünk, módosíthatunk értékeket a listában.
Statikus reprezentáció Statikus reprezentáció Táblázat, amiben érték, index párokat helyezünk el. Tudjuk, hogy melyik az els értéket tartalmazó pozíció, valamint az els szabad helyet tartalmazó pozíció. (A szabad helyek is listát alkotnak!) Amelyiknek nincs rákövetkez je, az a lista vége. Elem: 2 SzH: 3 1 2 3 4 5 6 7 8 8 13 7 10 19 6 4 5 1 7 8 0 0
Dinamikus reprezentáció Dinamikus reprezentáció Elemek láncolása, mindegyik csomópont referenciá(ka)t tárol a szomszéd(ok)ra Egyirányú láncolt lista Kétirányú láncolt lista null null null
Kétirányú Láncolt Lista
M veletek A lista állapotváltozói A lista állapotváltozói Head: referencia az els elemre. null, ha üres a lista. Tail: referencia az utolsó elemre. null, ha üres a lista. Akt: egy kiválasztott elemre mutat, lehet léptetni el re és hátra. Amikor üres a lista akkor null az értéke. Az Akt segítségével tudjuk a listában tárolt elemeket elérni, lekérdezni, megváltoztatni.
M veletek A lista m veletei A lista m veletei insertfirst(e): az E elemet beszúrja a lista elejére. insertlast(e): az E elemet beszúrja a lista végére. removefirst(): az els elemet törli a listából. removelast(): az utolsó elemet törli a listából. getaktvalue(): az aktuális elem lekérdezése. setaktvalue(e): az aktuális elem értékének megváltoztatása. stepfirst(): az aktuálist az els re lépteti. steplast(): az aktuálist az utolsóra lépteti. stepforward(): a Tail felé léptet eggyel. stepbackward(): a Head felé léptet eggyel.
M veletek A lista m veletei A lista m veletei insertbefore(e): az E elemet beszúrja az aktuális elé. insertafter(e): az E elemet beszúrja az aktuális mögé. removeakt(): az els elemet törli a listából. islast(): lekérdezi, hogy az aktuális a lista végén van-e. isfirst(): lekérdezi, hogy az aktuális a lista elején van-e. isempty: lekérdezi, hogy üres-e a lista.
Pseudokód M veletek (Pseudokódban) Konstruktor Head null Tail null Akt null isempty() return Head==Tail==null
Pseudokód M veletek Lekérdezések islast() return Akt==Tail isfirst() return Akt==Head getakt() HA Akt null AKKOR return Akt.Ertek setakt(ujertek) HA Akt null AKKOR Akt.Ertek ujertek
Pseudokód M veletek Léptetések stepforward() HA Akt null ÉS islast() AKKOR Akt Akt.Kovetkezo stepbackward() HA Akt null ÉS isfirst() AKKOR Akt Akt.Elozo steplast() Akt Tail stepfirst() Akt Head
Pseudokód M veletek Beszúrások I. insertfirst(ertek) Akt ujcsomopont ÚJ Node ujcsomopont.ertek ertek ujcsomopont.elozo null ujcsomopont.kovetkezo Head HA isempty() AKKOR Head Tail ujcsomopont KÜLÖNBEN Head.Elozo ujcsomopont Head ujcsomopont Head null Head null Régi Tail null Tail Régi null
Pseudokód M veletek Beszúrások I. insertfirst(ertek) Akt ujcsomopont ÚJ Node ujcsomopont.ertek ertek ujcsomopont.elozo null ujcsomopont.kovetkezo Head HA isempty() AKKOR Head Tail ujcsomopont KÜLÖNBEN Head.Elozo ujcsomopont Head ujcsomopont Head null Head Új null Új Régi Tail null Tail Régi null
Pseudokód M veletek Beszúrások II. insertlast(ertek) HA isempty() AKKOR insertfirst(ertek) KÜLÖNBEN Akt ujcsomopont ÚJ Node ujcsomopont.ertek ertek ujcsomopont.elozo Tail ujcsomopont.kovetkezo null Tail.Kovetkezo ujcsomopont Tail ujcsomopont
Pseudokód M veletek Beszúrások III. insertbefore(ertek) HA isempty() VAGY isfirst() AKKOR insertfirst(ertek) KÜLÖNBEN ujcsomopont ÚJ Node ujcsomopont.ertek ertek ujcsomopont.elozo Akt.Elozo ujcsomopont.kovetkezo Akt Akt.Elozo.Kovetkezo ujcsomopont Akt.Elozo ujcsomopont Akt ujcsomopont Régi Régi
Pseudokód M veletek Beszúrások III. insertbefore(ertek) HA isempty() VAGY isfirst() AKKOR insertfirst(ertek) KÜLÖNBEN ujcsomopont ÚJ Node ujcsomopont.ertek ertek ujcsomopont.elozo Akt.Elozo ujcsomopont.kovetkezo Akt Akt.Elozo.Kovetkezo ujcsomopont Akt.Elozo ujcsomopont Akt ujcsomopont Régi Új Régi
Pseudokód M veletek Beszúrások III. insertbefore(ertek) HA isempty() VAGY isfirst() AKKOR insertfirst(ertek) KÜLÖNBEN ujcsomopont ÚJ Node ujcsomopont.ertek ertek ujcsomopont.elozo Akt.Elozo ujcsomopont.kovetkezo Akt Akt.Elozo.Kovetkezo ujcsomopont Akt.Elozo ujcsomopont Akt ujcsomopont Régi Új Régi
Pseudokód M veletek Beszúrások III. insertbefore(ertek) HA isempty() VAGY isfirst() AKKOR insertfirst(ertek) KÜLÖNBEN ujcsomopont ÚJ Node ujcsomopont.ertek ertek ujcsomopont.elozo Akt.Elozo ujcsomopont.kovetkezo Akt Akt.Elozo.Kovetkezo ujcsomopont Akt.Elozo ujcsomopont Akt ujcsomopont Régi Új Régi
Pseudokód M veletek Beszúrások III. insertbefore(ertek) HA isempty() VAGY isfirst() AKKOR insertfirst(ertek) KÜLÖNBEN ujcsomopont ÚJ Node ujcsomopont.ertek ertek ujcsomopont.elozo Akt.Elozo ujcsomopont.kovetkezo Akt Akt.Elozo.Kovetkezo ujcsomopont Akt.Elozo ujcsomopont Akt ujcsomopont Régi Új Régi
Pseudokód M veletek Beszúrások III. insertbefore(ertek) HA isempty() VAGY isfirst() AKKOR insertfirst(ertek) KÜLÖNBEN ujcsomopont ÚJ Node ujcsomopont.ertek ertek ujcsomopont.elozo Akt.Elozo ujcsomopont.kovetkezo Akt Akt.Elozo.Kovetkezo ujcsomopont Akt.Elozo ujcsomopont Akt ujcsomopont Régi Új Régi
Pseudokód M veletek Beszúrások III. insertbefore(ertek) HA isempty() VAGY isfirst() AKKOR insertfirst(ertek) KÜLÖNBEN ujcsomopont ÚJ Node ujcsomopont.ertek ertek ujcsomopont.elozo Akt.Elozo ujcsomopont.kovetkezo Akt Akt.Elozo.Kovetkezo ujcsomopont Akt.Elozo ujcsomopont Akt ujcsomopont Régi Új Régi
Pseudokód M veletek Beszúrások IV. insertafter(ertek) HA isempty() VAGY islast() AKKOR insertlast(ertek) KÜLÖNBEN stepforward() insertbefore(ertek)
Pseudokód M veletek Törlések I. removefirst() HA isempty() AKKOR HA isfirst() AKKOR Akt Head.Kovetkezo Head Head.Kovetkezo HA Head null AKKOR Head.Elozo null KÜLÖNBEN Tail null Head Tail Head Tail null null null null
Pseudokód M veletek Törlések II. removelast() HA isempty() AKKOR HA Tail==Head AKKOR removefirst(); VÉGE HA islast() AKKOR Akt Tail.Elozo Tail Tail.Elozo Tail.Kovetkezo null
Pseudokód M veletek Törlések III. removeakt() HA isempty() AKKOR HA isfirst() AKKOR removefirst(); VÉGE HA islast() AKKOR removelast(); VÉGE Akt.Elozo.Kovektkezo Akt.Kovektezo Akt.Kovetkezo.Elozo Akt.Elozo Akt Akt.Kovetkezo Akt
Pseudokód M veletek Törlések III. removeakt() HA isempty() AKKOR HA isfirst() AKKOR removefirst(); VÉGE HA islast() AKKOR removelast(); VÉGE Akt.Elozo.Kovektkezo Akt.Kovektezo Akt.Kovetkezo.Elozo Akt.Elozo Akt Akt.Kovetkezo Akt
Pseudokód M veletek Törlések III. removeakt() HA isempty() AKKOR HA isfirst() AKKOR removefirst(); VÉGE HA islast() AKKOR removelast(); VÉGE Akt.Elozo.Kovektkezo Akt.Kovektezo Akt.Kovetkezo.Elozo Akt.Elozo Akt Akt.Kovetkezo Akt
Pseudokód M veletek Törlések III. removeakt() HA isempty() AKKOR HA isfirst() AKKOR removefirst(); VÉGE HA islast() AKKOR removelast(); VÉGE Akt.Elozo.Kovektkezo Akt.Kovektezo Akt.Kovetkezo.Elozo Akt.Elozo Akt Akt.Kovetkezo Akt
Pseudokód M veletek Törlések III. removeakt() HA isempty() AKKOR HA isfirst() AKKOR removefirst(); VÉGE HA islast() AKKOR removelast(); VÉGE Akt.Elozo.Kovektkezo Akt.Kovektezo Akt.Kovetkezo.Elozo Akt.Elozo Akt Akt.Kovetkezo
Java kód
Kódok
Kódok
Kódok
Kódok
Kódok
Kódok
Kódok
Lengyelforma struktogram
Lengyelformára alakítás Az alábbiakban az y sor a lengyelformára alakítandó kifejezést tartalmazza, az x sor a lengyelformára alakított kifejezést. Az s egy segédverem a lengyelformára hozáshoz. A v egy segédverem a kiértékeléshez. A z pedig az eredmény.
Lengyelformára alakítás
Lengyelforma kiértékelése
Használt függvények Függvények prec(e) HA e==` ' AKKOR return 3 HA e==`*' AKKOR return 2 HA e==`/' AKKOR return 2 HA e==`+' AKKOR return 1 HA e==`-' AKKOR return 1 kiertekel(e, o1, o2) HA e==` ' AKKOR return o1 o2 HA e==`*' AKKOR return o1*o2 HA e==`/' AKKOR return o1/o2 HA e==`+' AKKOR return o1+o2 HA e==`-' AKKOR return o1-o2
Összefoglaló
Összefoglaló Összefoglaló Szekvenciális adatszerkezetek ismétlés Láncolt lista statikus és dinamikus reprezentáció Kétirányú láncolt lista implementáció Lengyelforma II.
Felhasznált el adások Felhasznált el adások 3-5. el adás Nyékyné Gaizler Judit (Illetve új anyagok)