2017/12/16 17:22
1/18
Elemi adatszerkezetek
< Programozás
Elemi adatszerkezetek Szerző: Sallai András Copyright © Sallai András, 2011, 2014 Licenc: GNU Free Documentation License 1.3 Web: http://szit.hu
Vermek A verem, angolul stack. A veremben több számot tárolhatunk, de mindig csak az utoljára betett számot vehetjük ki. Az alábbiakban egy tömbön megvalósított verem sematikus ábráját látjuk.
Itt az utoljára betett szám az 50-es. Ezt a számot vagyunk képesek kivenni. Működése alapján angolosan LIFO-nak nevezzük az adatszerkezetet; a Last In First Out szavakból.
Sorok A sorok vagy angolul queue. Az elsőként betett elem kerül ki elsőnek a sorból. A működése alapján angolosan ezt FIFO adatszerkezetnek nevezzük; A First In First Out szavakból.
SzitWiki - http://www.szit.hu/
Last update: oktatas:programozás:elemi_adatszerkezetek http://www.szit.hu/doku.php?id=oktatas:programoz%C3%A1s:elemi_adatszerkezetek 2017/10/02 20:22
Láncolt listák Az objektumok lineáris sorrendben követik egymást.
Egy elem leírása Java nyelven: class Elem { Object adat; Elem kovetkezo; } C nyelven: struct telem { Object adat; struct telem *kovetkezo; }
Egy elem leírása Java nyelven class Elem { Object adat; Elem elozo; Elem kovetkezo; }
http://www.szit.hu/
Printed on 2017/12/16 17:22
2017/12/16 17:22
3/18
Elemi adatszerkezetek
Gráfok Pontok halmaza, amelyeket vonalakkal kötünk összes. A pontokat csúcsoknak, a vonalakat éleknek nevezzük.
SzitWiki - http://www.szit.hu/
Last update: oktatas:programozás:elemi_adatszerkezetek http://www.szit.hu/doku.php?id=oktatas:programoz%C3%A1s:elemi_adatszerkezetek 2017/10/02 20:22
http://www.szit.hu/
Printed on 2017/12/16 17:22
2017/12/16 17:22
5/18
Elemi adatszerkezetek
Fák A fákról A fák előnye a listákkal szemben, hogy gyorsabb a bejárásuk. A gráfelmélet alapján a fa: körmentes (két elem között csak egyetlen út létezik) összefüggő egyszerű gráfok A számítástechnikában általában gyökeres fákkal dolgozunk. Ezt figyelembe véve a meghatározása következő lehet: Csomópontok halmaza, amit élek kötnek össze, a következő feltételekkel: létezik egy kitüntetett csomópont a gyökér minden a gyökértől különböző elemet egy éllel kötünk a szülőjéhez bármely nem gyökér elemtől a szülőkön keresztül, eljuthatunk a gyökérig A közbenső elemeket ha gyökérként jelöljük meg, az alatta elhelyezkedő elemekkel részfát alkotnak.
SzitWiki - http://www.szit.hu/
Last update: oktatas:programozás:elemi_adatszerkezetek http://www.szit.hu/doku.php?id=oktatas:programoz%C3%A1s:elemi_adatszerkezetek 2017/10/02 20:22
A fa magasság a fa szintjeinek száma.
A bináris fa Minden elemnek legfeljebb két gyermekeleme van.
http://www.szit.hu/
Printed on 2017/12/16 17:22
2017/12/16 17:22
7/18
Elemi adatszerkezetek
Nem bináris Előfordulhat kettőnél több leágazás.
Kiegyensúlyozott fák Kiegyensúlyozott fáról beszélünk, ha az egyes szinteken a részfák magasságágának ingadozása nem nagyobb egynél.
SzitWiki - http://www.szit.hu/
Last update: oktatas:programozás:elemi_adatszerkezetek http://www.szit.hu/doku.php?id=oktatas:programoz%C3%A1s:elemi_adatszerkezetek 2017/10/02 20:22
http://www.szit.hu/
Printed on 2017/12/16 17:22
2017/12/16 17:22
9/18
Elemi adatszerkezetek
Bináris keresőfák Bináris keresőfáról beszélünk, ha minden szülőre igaz, hogy balra a nála kisebb elemek helyezkednek el, jobb a nála nagyobb elemek.
SzitWiki - http://www.szit.hu/
Last update: oktatas:programozás:elemi_adatszerkezetek http://www.szit.hu/doku.php?id=oktatas:programoz%C3%A1s:elemi_adatszerkezetek 2017/10/02 20:22
Bináris kereső fa építése: elhelyezzük az első elemet gyökérként ha következő elem kisebb mint az előző, akkor a gyökérelemtől balra helyezzük el ellenben jobbra helyezzük el A már bevitt elemeket végigjárva, ha csomópontnál kisebb akkor balra megyünk ellenben jobbra
Műveletek fákkal beszúrás törlés
http://www.szit.hu/
Printed on 2017/12/16 17:22
2017/12/16 17:22
Egy elem leírása Java nyelven class Elem { Object adat; Elem szulo; Elem bal; Elem jobb; }
A fa bejárása A fák bejárásának lehetséges módjai: szélességi bejárás mélységi bejárás SzitWiki - http://www.szit.hu/
11/18
Elemi adatszerkezetek
Last update: oktatas:programozás:elemi_adatszerkezetek http://www.szit.hu/doku.php?id=oktatas:programoz%C3%A1s:elemi_adatszerkezetek 2017/10/02 20:22
Mélységi bejárás háromféle sorrendje az informatikában: preorder bejárás inorder bejárás postorder bejárás
Preorder bejárás a gyökér elem majd a baloldali részfa preorder bejárása jobboldali részfa preorder bejárása
http://www.szit.hu/
Printed on 2017/12/16 17:22
2017/12/16 17:22
13/18
Preorder bejárás java nyelven: static void preorder(Elem elem) { if(elem != null) { System.out.println(elem.adat); preorder(elem.bal); preorder(elem.jobb); } }
Inorder bejárás baloldal részfa inorder bejárása gyökér elem jobboldali részfa inorder bejárása
SzitWiki - http://www.szit.hu/
Elemi adatszerkezetek
Last update: oktatas:programozás:elemi_adatszerkezetek http://www.szit.hu/doku.php?id=oktatas:programoz%C3%A1s:elemi_adatszerkezetek 2017/10/02 20:22
Java megvalósítás: static void inorder(Elem elem) { if(elem != null) { inorder(elem.bal); System.out.printf("%c ", elem.adat); inorder(elem.jobb); } }
Posztorder bejárás baloldali részfa posztorder bejárása jobboldali részfa posztorder bejárása végül a gyökér elem
http://www.szit.hu/
Printed on 2017/12/16 17:22
2017/12/16 17:22
15/18
Java megvalósítás: static void postorder(Elem elem) { if(elem != null) { postorder(elem.bal); postorder(elem.jobb); System.out.printf("%c ", elem.adat); } }
Szélességi bejárás
SzitWiki - http://www.szit.hu/
Elemi adatszerkezetek
Last update: oktatas:programozás:elemi_adatszerkezetek http://www.szit.hu/doku.php?id=oktatas:programoz%C3%A1s:elemi_adatszerkezetek 2017/10/02 20:22
Irodalom Könyvek Thomas H. Cormen, Charles E. Leierson, Ronald L. Rivest, Clifford Stein: Új algoritmusok
Linkek http://infoc.eet.bme.hu/ea12.php http://www.dkrmg.sulinet.hu/~lutter/szakkor/ http://hu.wikibooks.org/wiki/Programoz%C3%A1s/Algoritmusok
Függelék Láncolt lista példa
http://www.szit.hu/
Printed on 2017/12/16 17:22
2017/12/16 17:22
17/18
Program01.java class Szam { Integer szam; Szam kov; } public class Mutatok { public static void main(String[] args) { Szam elso = new Szam(); Szam akt = new Szam(); elso=akt; Szam uj; uj = new Szam(); uj.szam = 27; akt.kov = uj; akt = uj; uj = new Szam(); uj.szam = 45; akt.kov = uj; akt = uj; uj = new Szam(); uj.szam = 82; akt.kov = uj; akt = uj;
//Kiíratás akt = elso.kov; System.out.println("Kiíratás"); do { System.out.println(akt.szam); akt = akt.kov; } while (akt != null); } }
SzitWiki - http://www.szit.hu/
Elemi adatszerkezetek
Last update: oktatas:programozás:elemi_adatszerkezetek http://www.szit.hu/doku.php?id=oktatas:programoz%C3%A1s:elemi_adatszerkezetek 2017/10/02 20:22
From: http://www.szit.hu/ - SzitWiki Permanent link: http://www.szit.hu/doku.php?id=oktatas:programoz%C3%A1s:elemi_adatszerkezetek Last update: 2017/10/02 20:22
http://www.szit.hu/
Printed on 2017/12/16 17:22