A sor
A sor olyan sorozat, amelynek az egyik végére lehet tenni új elemeket, a másik végéről pedig el lehet venni őket. Amit először tettem be, azt veszem ki először. Angolul First In First Out (FIFO). Így működik pl a billentyűzet puffere.
A sor jellegű adatszervezés során általában ugyanolyan típusú adatokat használunk.
A HOVA azt mutatja meg, hogy melyik helyre rakhatunk elemet, a HONNAN pedig, hogy hol van a következő kivehető elem.
Műveletek:
Eljárás (Üresre állítás)
HOVA:=1 ; HONNAN:=1
Eljárás vége. /Ha HOVA=HONNAN akkor a sor üres./
Eljárás (SORBA(x))
Ha HOVA>N akkor HIBA(„betelt a sor”)
különben S(HOVA):=x ; HOVA:=HOVA+1 /x az új elem/
Ha vége
Eljárás vége.
Problémák: csak egyszer megyünk végig a soron, ezért nem veszi észre ha berak-kivesz, hogy vannak szabad helyek. Nem hatékony. Ez kiküszöbölhető ha léptetjük a tömböt (lassú) vagy, ha új változót vezetünk be, ami a sor elemszámát tartalmazza (db). Javítva:
Eljárás (SORBA(x))
Ha db>=MAX akkor HIBA
Különben
S(HOVA):=S(HONNAN);
db:=db+1;
Ha (HOVA=MAX) akkor HOVA:=1 (visszaáll az elejére)
Eljárás(SORBÓL(x))
Ha HONNAN=HOVA akkor HIBA(„üres a sor”)
különben x:=S(HONNAN) ; HONNAN:=HONNAN-1
Ha vége
Eljárás vége.
Eljárás(SORBÓL(x))
Ha db=0 akkor üres
Különben
MIBE:=S(HONNAN)
MIBE:=MIBE-1;
Ha (HONNAN=MAX) akkor HONNAN:=1 (visszaáll az elejére)
A verem
A verem olyan sorozat, amelynek csak az egyik végét tudjuk kezelni, oda tehetünk be új elemet és onnan vehetünk ki elemet. Amit legutoljára tettünk be, azt kell kivenni először. Ez angolul Last In First Out (LIFO). A vele végezhető műveletek: a verem tetejére való ráhelyezés és a verem tetejéről való levétel. Megszakítások kezelésekor, és eljáráshívások visszatérési címének tárolásakor használjuk.
PUSH(x): tegyünk be adott elemet
POP(x): kiveszünk egy elemet úgy hogy fizikailag is kikerüljön
TOP(x): A verem tetején lévő elem vizsgálata
V: array[1..max] of integer; (a verem tömbös megvalósítása)
VM: A veremmutató (ha a következő szabad helyet mutatja, akkor a leghatékonyabb)
Ha VM=1, a verem üres. Minden beírás előtt meg kell nézni, hogy nem fogunk-e túlcsordulni.
Műveletek:
Eljárás (TOP(x)) (Üresre állítás)
VM:=1
Eljárás vége.
Eljárás (PUSH(x))
Ha VM>max akkor HIBA („betelt a verem”)
különben V(VM):=x ; VM:=VM+1 (berakjuk az új elemet(x) és növeljük a veremmutató értékét)
Ha vége
Eljárás vége.
Eljárás (POP(x))
Ha VM:=1 akkor HIBA („üres a verem”)
különben VM:=VM-1 ; x:=V(VM) (csökkentjük a mutatót, majd kivesszük az elemet)
Ha vége
Eljárás vége.