Guest User

Untitled

a guest
Jul 22nd, 2018
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.25 KB | None | 0 0
  1. Szia!
  2.  
  3. Dinamikus tömbbel is csinálhatod, de szerintem sokkal egyszerűbb listával megvalósítani egy LIFO-t, hiszen mindig a lista elejére szúrunk be és onnan is veszünk ki. Egy egyszerű, egyszeresen láncolt listánál, csak az első elem címét kell eltárolni, a beszúrás művelete ennyi:
  4.  
  5. uj_elem = new valami;
  6.  
  7. uj_elem->kovetkezo = elso_elem; // kezdetben: elso_elem = NULL;
  8. elso_elem = uj_elem;
  9.  
  10. A kivétel pedig:
  11.  
  12. kivett_elem = elso_elem;
  13. if (elso_elem != NULL) elso_elem = elso_elem->kovetkezo;
  14.  
  15. valami_muvelet(kivett_elem);
  16. delete kivett_elem;
  17.  
  18. A LIFO-ra vagy más néven stackre rengeteg példa adható. Amúgy a teszteknél elegendő pusztán funkcionálisan letesztelni a tárolót, tehát megnézni, hogy belerakok három elemet és tényleg vissza tudom hozni őket, ráadásul a felépítésből következően, fordított sorrendben.
  19.  
  20. De ha szeretnél egy kicsit összetettebb példát, akkor lehet egy lengyel alakot kiértekelő példát csinálni, ahol van mondjuk kétféle művelet- és egy számosztály, ezeket helyezzük be a LIFO-ba, majd a végrehajtás úgy történik, hogy meghívjuk ezek számol() műveletét és átadjuk nekik a tárolót (azért, hogy mondjuk egy művelet fel tudja belőle hozni az operandusait).
Add Comment
Please, Sign In to add comment