Verem adatszerkezet

Speciális adatszerkezetek

„A számítástechnikában a verem (angolul stack) egy LIFO (Last In First Out) adatszerkezet, amelyben általában véges számú azonos típusú (méretű) adatot lehet tárolni.
Hagyományosan két alapműveletet értelmezünk rá:

  • push (rárak): A verem tetejére helyez egy új adatot. Ha a verem betelt, akkor túlcsordulásos állapotba kerül.
  • pop (levesz): A verem legfelső elemét leveszi és visszaadja. Ha a verem már üres, akkor alulcsordulásos állapotba kerül.


A különböző megvalósításoknál előfordulhat, hogy a legfelső vagy tetszőleges elemet is el lehet érni annak levétele nélkül.

A verem szokásos megvalósítása egy véges méretű összefüggő memóriaterület és egy veremmutató segítségével történik. A memóriaterületet egyik vége felől töltjük föl, és a veremmutató mindig a legfölső elemre mutat (a két művelet során ezt egyszerűen növelni vagy csökkenteni kell).”

A fenti Wikipédia idézetből tehát a lényeg: a veremnek mindig a „tetejére” kerülhet új elem, és mindig a „tetején” lévő elemhez férhetünk hozzá.

Általában a következő műveleteket értelmezzük veremre: üres-e (logikai), üres (kiürítjük, inicializáljuk a vermet), tele-e (logikai), verembe, veremből.

A verem alkalmazható sorozatok megfordítására, lengyelforma létrehozására és értelmezésére, és sok másra is.

Ha Pythonnal dolgozunk fontos a listaműveletek ismerete, hiszen ezek teszik „kényelmessé” a verem megvalósítását. Más nyelvekben – esetleg – nekünk kell a mutatót kezelni, amely a kivehető elemre, illetve a verem tetejére mutat.

"SAJÁT" MEGOLDÁS - Python példa (letöltés: verem.py)

A PYTHON "beépített" eszközeivel is megvalósítható a VEREM, sőt én inkább ezt, de hagyjuk...:

"PYTHON" MEGOLDÁS - Python példa (letöltés: verem_python.py)