3. LOGIKAI ADATSZERKEZETEK 1. Lineáris 2. Tömb 3. Lista 4. Verem (LIFO) 5. Sor (FIFO) 6. Táblázatok Forrás: Simon Gyula Számítástechnika középiskolásoknak Összeállította: Sashalmi Tibor
A programok különböző típusú adatokat dolgoznak fel. Az adattípus a következőktől függ: Belső ábrázolás, - amely az adott adattípusra jellemző Értékkészlet – az adott adattípusú változó milyen értékeket vehet fel. Műveletek – Milyen műveleteket lehet végezni az adott típusú változón? A probléma megoldás során több adattal is dolgozunk. Ezek az adatok általában egymástól nem függetlenek, logikailag összefüggnek. Ezek az összefüggések az adatszerkezetek.
3.1 Lineáris adatszerkezet Ez egy általános jellegű adatszerkezet. A lineáris adatszerkezet az alábbiakkal jellemez- hető: Van egy első és egy utolsó eleme Az ezeken kívüli elemeknek létezik megelőzője, és rákövetkezője. Az első elemnek csak rákövetkezője van, az utolsónak csak megelőzője.
3.2 Tömb A tömb azonos típusú adatok sorozata. A tömbök-nél a logikai szerkezetet az adatelemek egymás-hoz viszonyított elhelyezkedése adja. Így nyilván az első elem kitüntetett helyzetű, hiszen a többi elem helyét az elsőhöz viszonyíthatjuk. Egydimenziós tömb (vektor) Kétdimenziós tömb Léteznek még három-, négy-, stb. dimenziós tömbök is, de ezek ritkábban fordulnak elő.
3.3 Lista A tömbelemek tárolási módja a memóriában fix méretű és szekvenciális. A program futása közben nem változtatható. A törlés és beszúrás műveletet nehéz elvégezni. A lista adatszerkezetben az elemek sorrendje szintén jól meghatározott, de az egyes elemek a memóriában nem biztos, hogy ugyanilyen sorrendben helyezkednek el. Egyirányú láncolt lista Kétirányú láncolt lista
3.4 Verem (LIFO) (1 dia) A verem egy olyan lineáris adatszerkezet, amelynek mindig csak az utolsó elemével lehet műveletet végezni. Új adat beírása utolsó elemként Az utolsó elem kiolvasása, egyúttal az elem törlődik Szemléletesen az utolsó elem a verem tetejére kerül. Ezt vesszük ki elöször. És ha kivesszük az utolsó elemet ( az elsőként berakott) is, akkor kiürül a verem. Ezt a feldolgozási módot hívják LIFO –nak ( Last-In-First-Out : utoljára be- először ki.
3.4 Verem (LIFO) A verem legfontosabb alkalmazási területe az eljáráshívás: „A” eljárás „B” eljárás Program 7 8 9 10 B rútin 11 12 13 14 15 16 17 18 1 2 3 A rútin 4 5 6 Cím 11 Cím 4
3.5 Sor (FIFO) Olyan lineáris adatszerkezet, amelynek mindig a legelső elemével lehet műveletet végezni. Új elem beírása utolsó elemnek. A legelső elem kiolvasása, egyúttal ez az elem tölődik. Az adatokat sorba kell állítani. Ezt a feldolgozási módot FIFO - nak nevezik (First – In – First -Out: elsőként be - először ki). Tipikus alkalmazási terület a nyomtatási sor.
bal mutató információ jobb mutató 3.6 Bináris fa A fagráf egy olyan összefüggő gráf, amelyben nin- csen kör. A fa adatszerkezetben az egyes szögponto- kat összekötő élek irányítottak lesznek. Kiválasztunk egy szögpontot, ez lesz a a fa gyökéreleme. Ezután a gyökérelemtől éleket húzunk a szomszédos szögpotokhoz, ezekből újra a velük szomszédos szögpontokhoz, stb. Azokat a fa adatszerkezeteket ahol az eágazási elemből legfeljebb két elem indul ki bináris fának nevezzük. Bináris fák esetén az adatelem három részből áll: bal mutató információ jobb mutató
3.7 Táblázatok A táblázat tulajdonképpen egy függvénykapcsolat össze- tartozó értékek között. Adatelem a következőképpen néz ki: Az argomentum és az érték is állhat több mezőből. A táblaelemeket általában az argumentumuk alapján szokták keresni, nevezhetjük ezt tartalom szerinti keresésnek Argomentum érték
Logikai adatszerkezetek VÉGE Logikai adatszerkezetek
3.2.1 Egydimenziós tömb (vektor) A legegyszerűbb tömb típus. Az egyes elemekre egy számmal, az index segítségével hivatkozha-tunk. Az index az mutatja hogy az elem hányadik a tömb elemek között. Például turbó Pascal esetén a deklaráció formája: Var tomb : array [1…100] of integer A tömb neve Az indexek lehetséges értékei elemtípus Ennek a tömbnek a 6.eleme: tomb[6] A tömbelemek a memóriában egymás után helyezkednek el, az indexeknek megfelelően. Az, hogy mekkora helyet foglalel a tömb a memóriában, az egyrészt az elemek számától, másrészt az elemek típusátol függ. vissza
3.2.2 Kétdimenziós tömb (1.dia) Itt az elemek egy táblázatban helyezkednek el. Pl: A11 A12 A13 A14 A21 A22 A23 A24 A31 A32 A33 A34 A41 A42 A43 A44 A51 A52 A53 A54 A32 második index oszlopindex első index sorindex A kétdimenziós tömb logikailag sorokból, és oszlopokból áll. Az első index a sor sorszámát jelenti, a második szám az oszlop sorszáma. vissza
3.2.2 Kétdimenziós tömb (2.dia) Például a Turbo Pascal – ban a deklaráció formája: var A: array [1..5, 1..4] of char; Az a A32 – re való hivatkozás: A[3,2]. A memóriában az elemek általában sorfolytonosan helyez- kednek el. Az elemek sorrendje az előző példákon szem- léltetve: A11 A12 A13 A14 A21 A22 A23 A24 A31 A32 A33 ... stb. vissza
3.3.1 Egyirányú láncolt lista (1.dia) A listaelemei a következő szerkezetűek: A mutató a következő elem címét tartalmazza. Az elemek összeláncolása ezeknek a mutatóknak a segítségével történik. A lista tartalmaz két speciális elemet. - Listafej - Végelem adat mutató listafej 1.elem Cím 2 3.elem 000 2.elem Cím 3 vissza
3.3.1 Egyirányú láncolt lista (2.dia) Két fontos művelet a kővetkezőképpen végezhető el: Beszúrás : Egy elem beszúrásához elegendő az előző elem mutatójának megváltoztatása. listafej 1.elem Cím új Cím 2 2.elem Cím 3 3.elem 000 újelem Törlés: Egy elem törléséhez is az előző elem mutatóját kell megváltoztatni. listafej 1.elem Cím 3 Cím 2 2.elem Cím 3 3.elem 000 vissza
3.3.2 Kétirányú láncolt lista listafej Ha az egyes lista elemeket még egy résszel kiegészít- jük, akkor kétirányú lán- colt listát kapunk. A lista elemek három részből áll- nak: - információs rész - előző elem címe - következő elem címe 1.elem Cím lf Cím 2 2.elem Cím 1 Cím 3 3.elem Cím 2 Cím 4 4.elem Cím 3 000 vissza