180 likes | 297 Views
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.
E N D
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 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.
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.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.
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
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: 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
listafej 1.elem 3.elem 2.elem Cím 2 000 Cím 3 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ó vissza
2.elem Cím 3 újelem 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 3.elem 000 • 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
1.elem 2.elem 3.elem 4.elem Cím lf Cím 1 Cím 2 Cím 3 Cím 2 Cím 3 Cím 4 000 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 vissza