Adatszerkezetek Az adatokat két fő csoportra oszthatjuk: egyszerű és összetett adatok. Az egyszerű adatot egy érték jellemez, tovább nem bontható. (szám, logikai, karakter) Az összetett adatok egyszerű adatokból épülnek fel, melyek között valamilyen strukturális kapcsolat van. (string, rekord, tömb)
Lineáris listák Egy lineáris lista n>=0 számú R(1), R(2)....R(N) azonos típusú rekordok halmaza. A verem olyan lineáris lista, ahol a beszúrás (írás) és a kiolvasás (törlés) mindíg a lista azonos végén történik. (LIFO) A sor olyan lineáris lista, ahol a beszúrás mindíg a lista egyik végén, a kiolvasás mindíg a másik végén történik. (FIFO)
Szekvenciális verem A verem elemei sorban egymás után helyezkednek el. Szükségünk van egy T változóra ami a verem tetejét jelöli. Jelöljük X -el a vermet, és Y -al az információt: Beírás a verembe: T=T+1 X(T)=Y Törlés a veremből (adat kiolvasása): Y=X(T) T=T-1
Szekvenciális sor Két mutatóra van szükségünk: E: A sor elejét mutatja, ahonnan olvasunk V: A sor végét mutatja ahonnan írunk Beszúrás a sor végére: V=V+1 X(V)=Y Olvasás a sor elejéről: E=E+1 Y=X(E) (Max M elemű sor ciklikussága)
Láncolt helyfoglalás A lineáris listák tárolására a szekvenciális helyfoglalásnál sokkal rugalmasabb módszer a láncolt helyfoglalás. Minden rekord tartalmaz egy mutatót ami a lista következő elemét adja meg.
R(1)R(2)R(i)R(i+1)R(n)... Szekvenciális helyfoglalás: Adat 1.Adat 3.Adat 2.Adat 4.Adat 5. Láncolt helyfoglalás:
Szekvenciális és láncolt helyfoglalás összehasonlítása: 1.Láncolt hf. további tárterületet használ a mutatóknak. 2.Láncolt lista belsejéből könnyebben törölhető egy elem. 3.Láncolt lista belsejébe könnyű beszúrni egy elemet. 4.A lista egy kiválasztott elemére sokkal könnyebb hivatkozni szekvenciális listák esetén. 5.Láncolt hf. -al könnyebb két listát egymáshoz csatolni. 6.Láncolással bonyolult adatszerkezetek hozhatóak létre.
Láncolt verem A használaton kívüli rekordokat is egy láncolt verembe – a szabadok vermébe - tesszük. Ennek a veremnek a tetejét a SZAB változó mutatja. Adat T SZAB
Írás a láncolt verembe: (P: Átmeneti segédváltozó) Adat T SZAB P P Adat(P)=Y MUT(P)=T T=P P=SZAB SZAB=MUT(SZAB)
Olvasás láncolt veremből Adat T SZAB Adat P P Y=Adat(T) P=T T=MUT(T) MUT(P)=SZABA D SZABAD=P
Beszúrás láncolt sor végére A szabad elemeket a szabadok láncolt verméből vesszük, aminek a mutatója a SZAB Adat EV SZAB P=SZAB SZAB=MUT(SZAB) Adat(P)=Y MUT(V)=P V=P P
Törlés a láncolt sor elejéről A szabad elemeket a szabadok láncolt verméből vesszük, aminek a mutatója a SZAB Adat EV SZAB Y=Adat(E) P=E E=MUT(E) MUT(P)=SZAB SZAB=P P Adat