Előadást letölteni
Az előadás letöltése folymat van. Kérjük, várjon
KiadtaPéter Kiss Megváltozta több, mint 8 éve
1
A verem
2
A verem (stack) homogén adatelemek olyan sorozata, amelyen két művelet értelmezett: –Új elem elhelyezése a verem tetejére (push) –Elem kivétele a verem tetejéről (pop) A legutoljára belerakott dolgot tudjuk legelőször kivenni. (LIFO)
3
A verem megvalósítása Megvalósításához kell: –Egy vektor az elemek tárolására –Két mutató, az egyik a verem alját, a másik a tetejét jelzi Konstans Maxelem=maximális_elemszám Típus Elemszám: tárolandó_elemek_típusa Típus Veremtípus: rekord ( Elem:tömb[1..Maxelem] Elemtípus Alja, Teteje: egész )
4
A verem kezelése A verem inicializálása: Alapállapotban a verem üres Eljárás Veremkezd(Verem:Veremtípus) Verem.Alja:=1 Verem.Teteje:=0 Vége A Teteje mutató jelzi, hogy a verem üres, míg az Alja mutató értéke mindig 1 marad.
5
A verem állapotának lekérdezése A verem üres, ha a Teteje az Alja alá mutat. Ilyenkor a Veremüres igaz értékkel tér vissza. Függvény Veremüres(Verem: Veremtípus): logikai Veremüres:=(Verem.Teteje<Verem.Alja) vége A Teteje elérte a tömbhatárt, a verem betelt. A Veremtele igaz értékkel tér vissza. Függvény Veremtele(Verem:Veremtípus):logikai Veremtele:=(Verem.Teteje=MaxElem) Vége
6
Új elem elhelyezése a veremben Függvény Verembe (Verem: Veremtípus; Adat: Elemtípus): logikai ha nem VeremTele(Verem) akkor Verem.Teteje:=Verem.Teteje+1 Verem.Elem[Verem.Teteje]:)=Adat Verembe:=igaz különben Verembe:=hamis hvége vége
7
Elem kivétele veremből Függvény Veremből(Verem:Veremtípus; Adat: Elemtípus): logikai ha nem VeremÜres(Verem) akkor Adat:=Verem.Elem[Verem.Teteje] Verem.Teteje:=Verem.Teteje-1 Veremből:=igaz különben Veremből:=hamis hvége vége
8
A sor
9
A sor homogén adatelemek olyan sorozata, amelyen két művelet értelmezett: –Új elem elhelyezése a sor végére (put) –Elem kivétele a sor elejéről (get) A sor mindazon feladatok megoldására alkalmas, amelyekre a sorban állás kifejezésére használhatjuk, vagyis ahol az adatok feldolgozása a keletkezésük sorrendjében történek.
10
A sor megvalósítása Megvalósításához kell: –Egy vektor az elemek tárolására –Két mutató, az egyik a sorban lévő első, a másik az utolsó elemre mutat Konstans Maxelem=maximális_elemszám Típus Elemszám: tárolandó_elemek_típusa Típus Sortípus: rekord ( Elem:tömb[1..Maxelem] Elemtípus Első, Utolsó: egész )
11
A sor kezelése A sor inicializálása: Alapállapotban a sor üres Eljárás Sorkezd(Sor:Sortípus) Sor.Első:=1 Sor.Utolsó:=0 Vége
12
A sor állapotának a lekérdezése Függvény SorÜres (Sor:Sortípus): logikai SorÜres:(=(Sor.Első>Sor.Utolsó) Vége Függvény SorTele (Sor: Sortípus): logikai SorTele:=(Sor.Utolsó=MaxElem) Vége
13
Új elem elhelyezése sorba Függvény Sorba(Sor:Adattípus;Adat:Elemtípus):logikai ha nem SorTele(Sor) akkor Sor.Utolsó:=Sor.Utolsó+1 Sor.Elem[Sor.Utolsó]:=Adat Sorba:=igaz különben Sorba:=hamis hvége vége
14
Elem kivétele sorból Függvény Sorból(Sor:Adattípus;Adat:Elemtípus):logikai ha nem SorÜres(Sor) akkor Adat:=Sor.Elem[Sor.Első] Sor.Első:=Sor.Első+1 Sorból:=igaz különben Sorból:=hamis hvége vége
15
Elem kivétele léptetéssel Az eddig sorkezelő algoritmusok problémái: Ha az Elem[ ] tömb utolsó helyére nem tettünk elemet, akkor további elemek elhelyezésére nincs mód, holott a tömb elején lehetnek üres (felszabadult) helyek Megoldás: Nem engedjük a sor elemeit a tömb vége felé vándorolni. Ezt úgy érhetjük el, hogy egy elem kivételekor nem az Első mutatót léptetjük tovább, hanem a sor megmaradó elemeit és az Utolsó-t vissza. Ezt egy léptető ciklussal érjük el.
16
Függény LéptSorból (Sor:Sortípus; Adat:Elemtípus): logikai változó i:egész ha nem SorÜres(Sor) akkor Adat:=Sor.Elem[Sor.Első] ciklus i:=Sor.Első..Sor.Utolsó-1 ismétel Sor.Elem[i]:=Sor.Elem[i+1] cvége Sor. Utolsó:=Sor.Utolsó-1 LéptSorból:=igaz különben LéptSorból:=hamis vége
17
Ciklus sor Az Elem [ ] tömb végéhez elérve újabb elemeket a tömb elején helyezhetünk el, feltéve, hogy ott már vannak megüresedett helyek.
18
Ciklikus Sor kezelése Ciklikus sor állapotának lekérdezése: Függvény CiklSorÜres(Sor: Sortípus):logikai CiklSorÜres:=(Sor.Utolsó=0) Vége
19
A ciklikus sor kétféle helyzetben telhet meg: Az Elem[ ] tömb első elemétől az utolsóig tart a sor A tömbön körbehalada Utolsó eléri az Első előtti helyet Ki kell zárni azt a lehetőséget mikor a sor alaphelyzetben van (Utolsó=0) Függvény CiklSorTele(Sor:Sortípus):logikai CiklSorTele:=((Sor.Első=1 és Sor.Utolsó=MaxElem) vagy (Sor.Utolsó>0 és Sor.Utolsó=Sor.Első-1)) vége
20
Új elem elhelyezése a ciklikus sorban A korábbi Sorba eljáráshoz képest annyival bővül, hogy megvizsgáljuk, Utolsó elérte-e az Elem [ ] tömb végét. Ha még nem,akkor egyszerűen továbbléptetjük, ha viszont elérte, akkor a tömb első elemére állítjuk vissza.
21
Függvény CiklSorba(Sor:Adattípus;Adat:Elemtípus):logikai ha nem CiklSorTele(Sor) akkor ha Sor,Utolsó<MaxElem akkor Sor.Utolsó:=Sor.Utolsó+1 különben Sor.Utolsó:=1 hvége Sor.Elem[Sor.Utolsó]:=Adat CiklSorba:=igaz különben CiklSorba:=hamis hvége vége
22
Elem kivétele a ciklikus sorból Ha a sor csak egy elemet tartalmaz (Első=Utolsó), annak kiolvasása után a sort alaphelyzetbe kell állítani. A többi esetben az Első mutatót hasonlóan léptetjük, mint a beírásnál az Utolsót: a tömbön belül a következő elemre, a tömb utolsó eleméről viszont az elsőre.
23
Függvény CiklSorból(Sor:Adattípus;Adat:Elemtípus):logikai ha nem CiklSorÜres(Sor) akkor Adat:=Sor.Elem[Sor.Első] ha Sor.Első:=Sor.Utolsó akkor SorKezd(Sor) különben ha Sor.Elsó<MaxElem akkor Sor.Első:=Sor.Első+1 különben Sor.Első:=1 hvége CiklSorból:=igaz különben CiklSorból:=hamis hvége vége
Hasonló előadás
© 2024 SlidePlayer.hu Inc.
All rights reserved.