150 likes | 280 Views
16. Verem műveletei. Kaszab Gábor. A verem tömbös megvalósítása. -Itt a vermet egy tömb segítségével valósítjuk meg. -Az indexelést 1-től kezdjük, a tömb maximális mélységét pedig a Max változó tárolja. 1. top. Max. -A legfelső elem indexét a Top változóból tudhatjuk meg. Empty(v).
E N D
16. Verem műveletei Kaszab Gábor
A verem tömbös megvalósítása -Itt a vermet egy tömb segítségével valósítjuk meg -Az indexelést 1-től kezdjük, a tömb maximális mélységét pedig a Max változó tárolja 1 top Max -A legfelső elem indexét a Top változóból tudhatjuk meg
Empty(v) top:=0 Tömbös műveletek -Létrehoz egy üres v nevű vermet top Max
Tömbös műveletek IsEmpty(v) -Megvizsgálja hogy üres-e a verem -Üres, ha a visszatérési érték 0 -Különben nem üres Return(top=0)
Tömbös műveletek IsFull(v) -Hasonló az előzőhöz -Azt vizsgálja, hogy tele van-e a verem -Ha a top értéke megegyezik a Max- éval, akkor tele van Return(top=Max)
Push(v,e) top=Max H I B A v[top+1]:=e top:=top+1 Tömbös műveletek -A verem tetejére betesz egy új elemet -Ha a verem tele van, hibát kapunk -Egyébként beteszi az új elemet és beállítja a top változót a legfelső elemre e top top+1 Max
Tömbös műveletek -Kiveszi a verem legfelső elemét -Ha a verem üres volt, hibát kapunk -értékül adja az x- nek a legfelső elemet és a verem mélységét csökkenti 1- el Pop(v,x) top=0 H I B A x:=v[top] top:=top-1 x top-1 top
Tömbös műveletek -Megnézi a verem legfelső elemét, úgy hogy nem veszi ki belőle -Üres verem esetén hibát kapunk Top(v) top=0 Hiba Return(v[top]) top
Láncolt megvalósítás v top -Egy elem adatmezőből és az alatta lévő elemre mutató pointerből áll -Ha nincs alatta elem, a NIL- re mutat -A top változót a v pointer helyettesíti, ami a legfelső elemre mutat -Nem kell Max változó, mert dinamikusan bővíthető top
Láncolt műveletek -Létrehoz egy új vermet -A v pointert NIL- re állítja Empty(v) v=NIL
Láncolt műveletek -Lekérdezi, hogy üres- e a verem -Üres, ha a v pointer a NIL- re mutat IsEmpty(v) Return(v=NIL)
Láncolt műveletek -Lekérdezi a verem legfelső elemét -Ha üres a verem, hibát kapunk -A v pointer által mutatott elem adat mezőjét adja vissza Top(v) v=NIL Hiba Return(v^.adat) v Ennek az értékét kapjuk vissza
e Láncolt műveletek Push(v,e) -Betesz egy elemet a verembe -Először létrehoz egy p nevű elemet, az adatmezőnek értékül adja az e- t, mutatójának pedig értékül adja a v- t -Végül ráállítja a v- t az új elemre new(p) p^.adat:=e v p^.mut:=v v:=p
Pop(v,x) v=NIL x:=v^.adat H I B A p:=v v:=v^.mut p dispose(p) Láncolt műveletek -Kiveszi a legfelső elemet -Üres verem esetén hiba -A v- t egyel lentebbi elemre állítja -Kitörli a legfelső elemet v