készítette: csatlós istván 2005-ben · elmélet. 3. alapfogalmak 2. nyílt: a valós világ...

150
Adatszerkezetek Készítette: Csatlós István 2005-ben

Upload: others

Post on 02-Feb-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

Adatszerkezetek

Készítette:Csatlós István

2005-ben

Page 2: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

2

AlapfogalmakAlapfogalmak

Rendszer Rendszer ––

KKöözzöös isms isméérv alapjrv alapjáán n

öösszetartozsszetartozóó, egym, egymáással meghatssal meghatáározott rozott kapcsolatban lkapcsolatban léévvőő

elemek jelemek jóól l

kköörrüülhatlhatáárolt egyrolt együüttese.ttese.A valA valóós vils viláág rendszerei komplexek, g rendszerei komplexek,

nynyííltak, ltak, éés dinamikusak.s dinamikusak.1.1.

Komplex: Egy elemnek sok Komplex: Egy elemnek sok tulajdonstulajdonsáága lehet, valamint a kga lehet, valamint a köözzööttttüük k lléévvőő

kapcsolatok igen bonyolultak kapcsolatok igen bonyolultak

lehetnek.lehetnek.Elmélet

Page 3: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

3

AlapfogalmakAlapfogalmak

2.2.

NyNyíílt: A vallt: A valóós vils viláág rendszerei nem g rendszerei nem öönmagukban lnmagukban lééteztezőők, kk, köözzööttttüük k kküüllöönfnfééle kapcsolatok le kapcsolatok áállnak fenn.llnak fenn.

3.3.

Dinamikus: A fennDinamikus: A fennáállllóó

kapcsolatok kapcsolatok éés s a viselkeda viselkedéési msi móódok az iddok az időőben ben folyamatosan vfolyamatosan vááltoznak, s a rendszer ltoznak, s a rendszer egyes elemei megyes elemei mááskskééppen viselkednek ppen viselkednek egymegymáással szemben is.ssal szemben is.

Elmélet

Page 4: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

4

AlapfogalmakAlapfogalmak

A valA valóós vils viláág leegyszerg leegyszerűűssííttéése se modellalkotmodellalkotáással tssal töörtrtéénik.nik.

AbsztrakciAbsztrakcióó

––

Olyan tevOlyan tevéékenyskenyséég, g, amikor az egyes, konkramikor az egyes, konkréét (vizsgt (vizsgáált) lt) rendszernrendszernéél kiemell kiemelüünk nnk nééhháány kny köözzöös s tulajdonstulajdonsáágot, s a tgot, s a tööbbi (szbbi (száámunkra munkra lléényegtelen) tulajdonsnyegtelen) tulajdonsáággal nem ggal nem foglalkozunk.foglalkozunk.

Elmélet

Page 5: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

5

AlapfogalmakAlapfogalmak

Modell Modell ––

BeszBeszéélhetlhetüünk adatmodellrnk adatmodellrőől l

éés funkcions funkcionáális modellrlis modellrőől.l.1.1.

Adatmodell: A teljes modell statikus Adatmodell: A teljes modell statikus rréésze. Fix adatokkal dolgozik. Benne a sze. Fix adatokkal dolgozik. Benne a rendszer elemeinek tulajdonsrendszer elemeinek tulajdonsáágait gait adatokkal jellemezzadatokkal jellemezzüük. Ezzel k. Ezzel foglalkozik az adatszerkezetek foglalkozik az adatszerkezetek tanttantáárgy! Szokrgy! Szokáás logikai, vagy s logikai, vagy absztrakt adatszerkezetnek is nevezni.absztrakt adatszerkezetnek is nevezni.

Elmélet

Page 6: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

6

AlapfogalmakAlapfogalmak

2.2.

FunkcionFunkcionáális modell: Minden esetben lis modell: Minden esetben a viselkeda viselkedéést modellezi. Dinamikus a st modellezi. Dinamikus a jellemzjellemzőők idk időőbeli vbeli vááltozltozáása miatt. sa miatt. Ezzel foglalkozik az algoritmizEzzel foglalkozik az algoritmizáálláás s éés s a programoza programozáás tants tantáárgy. Szokrgy. Szokáás s fizikai, vagy tfizikai, vagy táárgyszerkezetnek is rgyszerkezetnek is nevezni. E szerkezetek jelennek meg a nevezni. E szerkezetek jelennek meg a memmemóóririáában, illetve a hban, illetve a hááttttéértrtáárolrolóókon.kon.

Elmélet

Page 7: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

7

Adatszerkezetek csoportosAdatszerkezetek csoportosííttáásasa

1.1.

Lehet statikus, vagy dinamikus. Lehet statikus, vagy dinamikus. Statikus adatszerkezet esetStatikus adatszerkezet esetéén az n az adatelemek szadatelemek szááma az idma az időőben nem ben nem vvááltozik, dinamikusnltozik, dinamikusnáál viszont igen.l viszont igen.

2.2.

TovTováábbbbáá

lehet homoglehet homogéén (egynemn (egyneműű), ), vagy heterogvagy heterogéén (n (öösszetett, eltsszetett, eltéérrőő

ttíípuspusúú). Ezeket tov). Ezeket továább bb csoportoscsoportosííthatjuk logikai (absztrakt) thatjuk logikai (absztrakt) éés s fizikai (tfizikai (táárgy) adatszerkezetekre.rgy) adatszerkezetekre.Elmélet

Page 8: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

8

Adatszerkezetek csoportosAdatszerkezetek csoportosííttáásasa

HomogHomogéén logikai adatszerkezetek n logikai adatszerkezetek ttíípusai pusai éés megvals megvalóóssííttáásuk suk ttáárgyszerkezetekkel:rgyszerkezetekkel:

1.1.

StruktStruktúúra nra néélklküüli adatszerkezetek li adatszerkezetek –– halmaz, ill. multihalmaz.halmaz, ill. multihalmaz.

2.2.

AsszociatAsszociatíív adatszerkezetek v adatszerkezetek ––

ttöömb, ill. mb, ill. ttááblbláázat.zat.

3.3.

SzekvenciSzekvenciáális adatszerkezetek lis adatszerkezetek ––

lista, lista, verem, sor, sztring.verem, sor, sztring.

4.4.

Hierarchikus adatszerkezetek Hierarchikus adatszerkezetek ––

fa.fa.5.5.

HHáállóós adatszerkezetek s adatszerkezetek ––

hháállóó..Elmélet

Page 9: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

9

Adatszerkezetek csoportosAdatszerkezetek csoportosííttáásasa

HeterogHeterogéén logikai adatszerkezet n logikai adatszerkezet éés s megvalmegvalóóssííttáása tsa táárgyszerkezettel:rgyszerkezettel:

1.1.

Rekord a RAMRekord a RAM--ban (ez a logikai).ban (ez a logikai).2.2.

Rekord a fRekord a fáájlban (ez a tjlban (ez a táárgyszerkezet)rgyszerkezet)

A kA kéét rekordfogalom nagymt rekordfogalom nagyméértrtéékben eltkben eltéér r egymegymááststóól! l! ÁÁbrbráázolzoláása mindig sa mindig folytonosan tfolytonosan töörtrtéénik, mnik, mííg a homogg a homogéén n adatszerkezetek adatszerkezetek áábrbráázolhatzolhatóók szk széétsztszóórt rt mmóódon is.don is.

Elmélet

Page 10: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

10

MMűűveletvveletvéégzgzéés a logikai s a logikai adatszerkezetekkeladatszerkezetekkel

1.1.

LLéétrehoztrehozáás s ––

E mE műűvelet sorvelet soráán dn dőől el az l el az adatszerkezet feladatszerkezet felééppííttéése se éés a s a legfontosabb jellemzlegfontosabb jellemzőői. E mi. E műűvelet velet elvelvéégzgzéése utse utáán vihetn vihetüünk fel nk fel adatelemeket.adatelemeket.

2.2.

BBőővvííttéés s ––

E mE műűvelet sorvelet soráán az n az adatelemek szadatelemek szááma nma nőő, , úúj adatelemek j adatelemek kerkerüülnek be a szerkezetbe. (Csak lnek be a szerkezetbe. (Csak dinamikus adatszerkezet bdinamikus adatszerkezet bőővvííthetthetőő!)!)

Elmélet

Page 11: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

11

MMűűveletek log. adatszerkezetekkelveletek log. adatszerkezetekkel3.3.

TTöörlrléés s ––

BeszBeszéélhetlhetüünk logikai nk logikai éés s

fizikai tfizikai töörlrléésrsrőől.l.••

Logikai: az adatelemek szLogikai: az adatelemek szááma nem ma nem vvááltozik, csak valamilyen technikltozik, csak valamilyen technikáával val egy, vagy tegy, vagy tööbb adatelemet bb adatelemet éérvrvéénytelennytelenííttüünk.nk.

••

Fizikai: az adatelemek darabszFizikai: az adatelemek darabszááma ma cscsöökken, tkken, téénylegesen eltnylegesen eltáávolvolíítjuk tjuk őőket.ket.

4.4.

Csere Csere ––

Az adatelemek szAz adatelemek szááma nem, ma nem, csak az csak az éértrtéékküük vk vááltozik. ltozik. (A log. t(A log. töörlrléés s áált.lt.--ban egy ban egy éértrtéékcsere!)kcsere!)Elmélet

Page 12: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

12

MMűűveletek log. adatszerkezetekkelveletek log. adatszerkezetekkel5.5.

RendezRendezéés s ––

RendezRendezéési algoritmusok si algoritmusok

ismerete szismerete szüüksksééges az alkalmazges az alkalmazáássáához.hoz.6.6.

KeresKereséés s ––

Annak a kAnnak a kéérdrdéésnek az snek az

eldeldööntntéése a feladat, hogy egy jse a feladat, hogy egy jóól l definidefiniáált elem benne vanlt elem benne van--e az e az adatszerkezetben, vagy nincs. Fajtadatszerkezetben, vagy nincs. Fajtáái:i:

teljesteljes--, line, lineáárisris--, bin, binááris keresris kereséés.s.7.7.

ElEléérréés s ––

Olyan mOlyan műűvelet, amely velet, amely

bbáármely elem megfogrmely elem megfogáássáát, elt, eléérréésséét t jelenti. Fajtjelenti. Fajtáái: soros, ki: soros, köözvetlen. spec. zvetlen. spec. mműűvelete

a

bejvelete

a

bejáárráás

mind

megfogs,

mind

megfogáásasa.Elmélet

Page 13: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

13

MMűűveletek log. adatszerkezetekkelveletek log. adatszerkezetekkel8.8.

FeldolgozFeldolgozáás s ––

az adatszerkezet minden az adatszerkezet minden

elemeleméén valamilyen mn valamilyen műűvelet elvvelet elvéégzgzéése se ttöörtrtéénik. Specinik. Speciáális mlis műűvelete az velete az úújrafeldolgozjrafeldolgozáás, amikor egy s, amikor egy úúj j ttáárolrolóóterterüületen ismleten isméét lt léétrehozzuk az trehozzuk az adatszerkezetet. Ez tadatszerkezetet. Ez töörtrtéénhet nhet vvááltoztatltoztatáás ns néélklküül, vagy vl, vagy vááltoztatltoztatáással ssal is. is. ÁÁltalltaláában az utban az utóóbbi valbbi valóósul meg, sul meg, hiszen a mhiszen a műűveletnek pont ez a cveletnek pont ez a céélja. lja. (E m(E műűvelet csak fiz. szerk.velet csak fiz. szerk.--nnéél ll léétezik!)tezik!)

Elmélet

Page 14: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

14

Adatszerkezetek Adatszerkezetek áábrbráázolzoláásasa

Mindig a tMindig a táárgyszerkezeten alapszik. Azt rgyszerkezeten alapszik. Azt éértjrtjüük alatta, hogy hogyan jelenk alatta, hogy hogyan jeleníítjtjüük k meg az egyes adatelemeket a meg az egyes adatelemeket a memmemóóririáában.ban.

LehetsLehetsééges ges áábrbráázolzoláási msi móódok a dok a kköövetkezvetkezőők:k:

1.1.

Folytonos Folytonos áábrbráázolzolááss2.2.

SzSzéétsztszóórt rt áábrbráázolzolááss

Elmélet

Page 15: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

15

Adatszerkezetek Adatszerkezetek áábrbráázolzoláásasaFolytonos Folytonos áábrbráázolzoláás jellemzs jellemzőői:i:

Minden adatelem szMinden adatelem száámmáára azonos ra azonos hosszhosszúússáággúú

ttáárhelyet foglalunk le a rhelyet foglalunk le a

memmemóóririáában.ban.

Egy tEgy táárhely annyi brhely annyi báájtbjtbóól l ááll, hogy az ll, hogy az adott adatszerkezet minden adateleme adott adatszerkezet minden adateleme megjelenmegjelenííthetthetőő

legyen.legyen.

Az egyes tAz egyes táárhelyek folytonosan rhelyek folytonosan öösszefsszefüüggggőő

ttáárterrterüületet alkotnak.letet alkotnak.

ÍÍgy, ha ismerjgy, ha ismerjüük az 1. tk az 1. táárhelyet, s a trhelyet, s a táárhelyek rhelyek azonos, kazonos, köözzöös ms mééretretéét, akkor ebbt, akkor ebbőől bl báármelyik rmelyik ttáárhely crhely cííme meghatme meghatáározhatrozhatóó!!Elmélet

Page 16: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

16

Adatszerkezetek Adatszerkezetek áábrbráázolzoláásasaFolytonos Folytonos áábrbráázolzoláás jellemzs jellemzőői:i:

Az adatelemek elhelyezAz adatelemek elhelyezéése egyse egy--egy egy ttáárhelyen minden konkrrhelyen minden konkréét t adatszerkezet esetadatszerkezet esetéében egy ben egy leklekéépezpezééssel tssel töörtrtéénik, amely nik, amely megmondja, hogy az adatelemeket megmondja, hogy az adatelemeket hovhováá

kell elhelyezni (s esetleg azt is, kell elhelyezni (s esetleg azt is,

hogy hogyan) az adatszerkezet hogy hogyan) az adatszerkezet ttáárhelyrhelyéén.n.

Hogyan hajthatHogyan hajthatóók vk véégre ezen a tgre ezen a táárolroláási si mmóódon a megismert mdon a megismert műűveletek?veletek?

Elmélet

Page 17: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

17

Adatszerkezetek folytonos Adatszerkezetek folytonos áábrbráázolzoláásasa

1.1.

LLéétrehoztrehozáás s ––

TTáárhely lefoglalrhely lefoglaláássáát t jelenti.jelenti.

2.2.

BBőővvííttéés s ––

E mE műűvelet egyszervelet egyszerűűen en vvéégrehajthatgrehajthatóó

akkor, ha a feltakkor, ha a feltööltltéés s

(vagyis a lek(vagyis a lekéépezpezéés) olyan, hogy s) olyan, hogy folytonosan tfolytonosan töölti fel a rendelkezlti fel a rendelkezéésre sre áállllóó

ttáárhelyet. A mrhelyet. A műűvelet adatelemek velet adatelemek

mozgatmozgatáássáával is egyval is együütt jtt jáárhat.rhat.

Elmélet

Page 18: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

18

Adatszerkezetek folytonos Adatszerkezetek folytonos áábrbráázolzoláásasa

3.3.

TTöörlrléés s ––

Logikai vLogikai vááltozata ltozata megvalmegvalóóssííthatthatóó

adatcseradatcseréével akkor, ha vel akkor, ha

egy olyan adott bitkombinegy olyan adott bitkombináácicióóra ra áállllíítjuk be a ttjuk be a táárhelyet, amelynek nincs rhelyet, amelynek nincs gyakorlati jelentgyakorlati jelentőősséége. Fizikai ge. Fizikai vvááltozatltozatáának alkalmaznak alkalmazáása sorsa soráán az n az utolsutolsóó

adatelemmel feladatelemmel felüüllíírjuk a rjuk a

rráákköövetkezvetkezőőt.t.4.4.

Csere Csere ––

Az adott tAz adott táárhelyet ilyenkor rhelyet ilyenkor

egyszeregyszerűűen felen felüüllíírjuk az rjuk az úúj adattal.j adattal.Elmélet

Page 19: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

19

Adatszerkezetek folytonos Adatszerkezetek folytonos áábrbráázolzoláásasa5.5.

RendezRendezéés s ––

a folytonos a folytonos áábrbráázolzoláás s

esetesetéén bn báármelyik ismert rendezrmelyik ismert rendezéési si algoritmus alkalmazhatalgoritmus alkalmazhatóó..

6.6.

KeresKereséés s ––

MindhMindháárom tanult keresrom tanult kereséési si eljeljáárráás alkalmazhats alkalmazhatóó..

7.7.

ElEléérréés s ––

Minden tMinden táárhelyet krhelyet köözvetlen zvetlen mmóódon el tudunk don el tudunk éérni.rni.

8.8.

FeldolgozFeldolgozáás s ––

Az Az öösszes ismert sszes ismert kereskereséési eljsi eljáárrááson son éés a ks a köözvetlen zvetlen eleléérréésen alapul.sen alapul.Elmélet

Page 20: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

20

Adatszerkezetek folytonos Adatszerkezetek folytonos áábrbráázolzoláásasaElElőőnyei:nyei:

Gyors feldolgozGyors feldolgozáás.s.

Statikus adatszerkezetek esetStatikus adatszerkezetek esetéén jn jóól l alkalmazhatalkalmazhatóó..

HHáátrtráányai:nyai:

LassLassúú

utasutasííttáás vs véégrehajtgrehajtáás.s.

Ilyenkor a tIlyenkor a táárhelyet elrhelyet előőre le kell re le kell foglalni, s emiatt nincs lehetfoglalni, s emiatt nincs lehetőősséég a g a dinamikus memdinamikus memóóriakezelriakezeléésre.sre.

Elmélet

Page 21: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

21

Adatszerkezetek szAdatszerkezetek széétsztszóórt rt áábrbráázolzoláásasaSzSzéétsztszóórt rt áábrbráázolzoláás jellemzs jellemzőői:i:

Az egyes tAz egyes táárhelyek mrhelyek méérete rete kküüllöönbnböözhet egymzhet egymááststóól.l.

A tA táárhely egy rrhely egy réészszéén adatelemek n adatelemek (adatr(adatréész), msz), máásik rsik réészszéén egy, vagy tn egy, vagy tööbb bb mutatmutatóó

taltaláálhatlhatóó, amely t, amely táárcrcíímet met

tartalmaz.tartalmaz.

LehetLehetőővvéé

teszi a dinamikus tteszi a dinamikus táárkezelrkezeléést.st.

A tA táárhelyek nem folytonosan, hanem rhelyek nem folytonosan, hanem szszéétsztszóórtan helyezkednek el.rtan helyezkednek el.Elmélet

Page 22: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

22

Adatszerkezetek szAdatszerkezetek széétsztszóórt rt áábrbráázolzoláásasaSzSzéétsztszóórt rt áábrbráázolzoláás ts tíípusai:pusai:1.1.

EgyirEgyiráányban lnyban lááncolt listancolt lista

2.2.

CirkulCirkulááris listaris lista3.3.

KKéétirtiráányban lnyban lááncolt listancolt lista

4.4.

MultilistaMultilistaAdatszerkezetek reprezentAdatszerkezetek reprezentáácicióójaja: az : az

adatszerkezet tadatszerkezet táárolroláási msi móódjdjáának nak éés a s a leklekéépezpezéésséének az egynek az együüttes megadttes megadáása.sa.

Adatszerkezetek implementAdatszerkezetek implementáácicióójaja: : amikor egy adott programozamikor egy adott programozáási nyelven si nyelven leprogramozzuk az adatszerkezetet.leprogramozzuk az adatszerkezetet.Elmélet

Page 23: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

23

EgyirEgyiráányban lnyban lááncolt listancolt lista

Fej Fej ––

az 1. taz 1. táárhely crhely cíímméét tartalmazza.t tartalmazza.MutatMutatóó

––

mindig a kmindig a köövetkezvetkezőő

ttáárhely rhely

ccíímméére mutat. re mutat. NIL NIL ––

olyan mutatolyan mutatóó, amely azt jelzi, hogy , amely azt jelzi, hogy

nincs tovnincs továábbi tbbi táárhely.rhely.Hogyan hajthatHogyan hajthatóóak vak véégre ebben az gre ebben az

áábrbráázolzoláási msi móódban a mdban a műűveletek?veletek?

Fej

Adat

Mut. Adat

NILAdat

Mut.

Elmélet

Page 24: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

24

CirkulCirkulááris ris éés ks kéétirtiráányban lnyban lááncolt listancolt lista

Hogyan hajthatHogyan hajthatóóak vak véégre ezekben az gre ezekben az áábrbráázolzoláási msi móódokban a tanult dokban a tanult mműűveletek?veletek?

Fej

Adat

Mut. Adat

Mut.Adat

Mut.

Fej

Adat N. M2 Adat M1 N.Adat M1 M2

Fej

Elmélet

Page 25: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

25

MultilistaMultilistaKKüüllöönlegessnlegesséége az, hogy az adatrge az, hogy az adatréésze sze

öösszetett adatelemeket tartalmaz.sszetett adatelemeket tartalmaz.MegvalMegvalóóssííttáása 3 msa 3 móódon tdon töörtrtéénhet:nhet:

1.1. KKéét egymt egymááststóól fl füüggetlen lista lggetlen lista lááncolncoláása.sa.2.2. Egy adott adatEgy adott adatéértrtéékre tkre töörtrtéénik meg a nik meg a

llááncolncoláás. Annyi rs. Annyi réészlszláánc nc ééppüül fel, ahl fel, aháány ny kküüllöönbnböözzőő

éértrtééke van az adatelemnek. ke van az adatelemnek.

FejbFejbőől annyi van, ahl annyi van, aháány rny réészlszláánc.nc.3.3. Az adatelem 1. rAz adatelem 1. réésze jelzsze jelzőő

funkcifunkcióót tt töölt lt

be, azt mutatja meg, hogy az adat valbe, azt mutatja meg, hogy az adat valóóban ban adatadat--e, vagy egy e, vagy egy úúj lj láánc kezdete, tehnc kezdete, teháát fej.t fej.Elmélet

Page 26: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

26

Szabad helyek problSzabad helyek probléémmáájaja1.1.Folytonos tFolytonos táárolroláás esets esetéénn

–– Csak fizikai tCsak fizikai töörlrléést engedst engedüünk meg, s nk meg, s öösszegysszegyűűjtjjtjüük a szabad tk a szabad táárhelyeket.rhelyeket.

–– Vagy csak logikai tVagy csak logikai töörlrléést engedst engedüünk meg, s nk meg, s csak bizonyos idcsak bizonyos időőkköözzöönknkéént hajtunk vnt hajtunk véégre gre szabad tszabad táárhely gyrhely gyűűjtjtöögetgetéést.st.

MegvalMegvalóóssííttáása 2 msa 2 móódon tdon töörtrtéénhet:nhet:1.1.

SzemSzeméétgytgyűűjtjtéési techniksi technikáával (Garbage val (Garbage

Collection), mely a hCollection), mely a hááttttéérben, rben, éés bizonyos s bizonyos ididőőkköözzöönknkéént aktiviznt aktivizáállóódva tdva töörtrtéénik.nik.

2.2. Szabad helyek nyilvSzabad helyek nyilváántartntartáása technika.sa technika.Elmélet

Page 27: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

27

Szabad helyek problSzabad helyek probléémmáájaja2.2.SzSzéétsztszóórt trt táárolroláás esets esetéénn

––

A tA táárhelyeket elrhelyeket előőre lefoglaljuk, re lefoglaljuk, éés s kkéészszííttüünk egy egyirnk egy egyiráánynyúú

listlistáát a szabad t a szabad

helyekrhelyekrőől.l.––

Logikai tLogikai töörlrléés itt is lehetss itt is lehetsééges.ges.

MegvalMegvalóóssííttáása itt is 2 msa itt is 2 móódon tdon töörtrtéénhet:nhet:1.1. SzemSzeméétgytgyűűjtjtéési techniksi technikáával (Garbage val (Garbage

Collection), mely a hCollection), mely a hááttttéérben, rben, éés bizonyos s bizonyos ididőőkköözzöönknkéént aktiviznt aktivizáállóódva tdva töörtrtéénik.nik.

2.2. Szabad helyek nyilvSzabad helyek nyilváántartntartáása technika sa technika alkalmazalkalmazáássáával (szabad helyek listval (szabad helyek listáája).ja).Elmélet

Page 28: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

28

TTáárgyszerkezetekrgyszerkezetekI.I.

HomogHomogéén adatszerkezetekn adatszerkezetek

1.1.

StruktStruktúúra nra néélklküüli adatszerkezetekli adatszerkezetek KKöözzöös jellemzs jellemzőőjjüük:k:

––

nincs bennnincs bennüük semmilyen kapcsolat az k semmilyen kapcsolat az adatelemek kadatelemek köözzöött,tt,

––

éés bs báármilyen rmilyen áátrendeztrendezéés uts utáán ugyanolyanok n ugyanolyanok maradnak (dinamikusak). maradnak (dinamikusak).

TTíípusai:pusai:1.1.

Halmaz, vagy Set:Halmaz, vagy Set:

––

melyben, minden elem melyben, minden elem éértrtééke kke küüllöönbnböözzőő..

2.2.

Multihalmaz, vagy Multiset, ill. Bag:Multihalmaz, vagy Multiset, ill. Bag:––

melynek, lehet azonos melynek, lehet azonos éértrtéékkűű--, , éés isms isméétltlőőddőő

eleme

iseleme

is.Elmélet

Page 29: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

29

TTáárgyszerkezetekrgyszerkezetekI.I.

HomogHomogéén adatszerkezetekn adatszerkezetek1.1.

StruktStruktúúra nra néélklküüli adatszerkezetekli adatszerkezetek

SpeciSpeciáálisan lisan éértelmezett mrtelmezett műűveletei:veletei:1.1.

UniUnióó

2.2.

MetszetMetszet3.3.

KKüüllöönbsnbséégg

4.4.

TovTováábbbbáá

a Multihalmaz eseta Multihalmaz esetéén az n az ismisméétltlőőddéés miatt az els miatt az előőfordulforduláási szsi száámot is mot is figyelembe kell venni.figyelembe kell venni.

Ennek az adatszerkezetnek ott van alapvetEnnek az adatszerkezetnek ott van alapvetőő szerepe, ahol az adatelemek valamikor, szerepe, ahol az adatelemek valamikor,

valahogyan elvalahogyan előőáállnak.llnak.Elmélet

Page 30: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

30

TTáárgyszerkezetekrgyszerkezetekI.I.

HomogHomogéén adatszerkezetekn adatszerkezetek

2.2.

AsszociatAsszociatíív adatszerkezetekv adatszerkezetek

––

a a TTÖÖMBMBEzek a halmaz adatszerkezetekbEzek a halmaz adatszerkezetekbőől l úúgy gy keletkeznek, hogy lkeletkeznek, hogy léétrehozunk egy trehozunk egy osztosztáályozlyozáást. Az st. Az íígy nyert elemekbgy nyert elemekbőől l rréészhalmazokat hozunk lszhalmazokat hozunk léétre. E tre. E rréészhalmazok, vagy diszjunktak, vagy szhalmazok, vagy diszjunktak, vagy áátfedtfedőőek, ek, éés lehetnek ks lehetnek köözzööttttüük 1 elemk 1 eleműűek ek is. Nem dinamikusak!is. Nem dinamikusak!TTíípusai:pusai:

1.1.

EgydimenziEgydimenzióós ts töömbmb2.2.

TTööbbdimenzibbdimenzióós ts töömbmbElmélet

Page 31: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

31

TTáárgyszerkezetekrgyszerkezetekHogyan hajthatHogyan hajthatóók vk véégre ezen az gre ezen az adatszerkezeten a tanult madatszerkezeten a tanult műűveletek?veletek?1.1.

LLéétrehoztrehozáás: a dimenzis: a dimenzióószszáám m éés az s az

indextartomindextartomáány rny röögzgzííttéésséével lvel léétrehozzuk a trehozzuk a struktstruktúúrráát. (A gyakorlatban ez azt jelenti, t. (A gyakorlatban ez azt jelenti, hogy egymhogy egymáásutsutáán felvesszn felvesszüük az elemeket!)k az elemeket!)

2.2. BBőővvííttéés: s: úúj elem felvj elem felvéételteléével tvel töörtrtéénik.nik.3.3.

TTöörlrléés: a logikai vs: a logikai vááltozata elemcserltozata elemcseréével vel

kköönnyen megvalnnyen megvalóóssííthatthatóó, fizikai t, fizikai töörlrléés s pedig nincs.pedig nincs.

4.4. Csere: van, elemcserCsere: van, elemcseréét jelent.t jelent.Elmélet

Page 32: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

32

TTáárgyszerkezetekrgyszerkezetek5.5.

RendezRendezéés: s: ááltalltaláában csak 1 dimenziban csak 1 dimenzióóban ban

van van éértelme, trtelme, tööbb dimenzibb dimenzióóban nem ban nem éértelmezzrtelmezzüük.k.

6.6.

KeresKereséés: hasonls: hasonlóóan kezelendan kezelendőő, mint a , mint a rendezrendezéés.s.

7.7. ElEléérréés: ks: köözvetlen mzvetlen móódon tdon töörtrtéénik (cnik (cíím!).m!).8.8.

FeldolgozFeldolgozáás: alapja a ks: alapja a köözvetlen elzvetlen eléérréés, 1 s, 1

dimenzidimenzióóban esetleg a keresban esetleg a kereséés.s.Az adatszerkezet Az adatszerkezet áábrbráázolzoláása folytonosan sa folytonosan ttöörtrtéénik, melyet vektorszernik, melyet vektorszerűűnek hnek híívnak! vnak! TTööbb dimenzibb dimenzióóban el kell dban el kell döönteni, hogy nteni, hogy sorsor--, vagy oszlopfolytonosan t, vagy oszlopfolytonosan töörtrtéénjen!njen!Elmélet

Page 33: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

33

TTáárgyszerkezetekrgyszerkezetekA tA töömb adatszerkezet a programozmb adatszerkezet a programozáásban sban

alapvetalapvetőő

jelentjelentőőssééggűű, mert a seg, mert a segíítstsééggéével vel minden mminden máás adatszerkezet s adatszerkezet áábrbráázolhatzolhatóó!!

EzEzéért vizsgrt vizsgááljunk meg nljunk meg nééhháány gyakorlati ny gyakorlati problprobléémmáát, melyek a tt, melyek a töömbmböök segk segíítstsééggéével vel leprogramozhatleprogramozhatóók.k.

A konkrA konkréét magas szintt magas szintűű

programozprogramozáási si nyelvek knyelvek köözzüül a feladatok megoldl a feladatok megoldáása sorsa soráán n a C nyelvet haszna C nyelvet hasznááljuk, de nem tljuk, de nem téérrüünk ki a nk ki a nyelv sajnyelv sajáátosstossáágaira, hanem csak a gaira, hanem csak a megoldmegoldáási algoritmusra koncentrsi algoritmusra koncentráálunk!lunk!Elmélet

Page 34: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

34

TTáárgyszerkezetekrgyszerkezetekG

yako

rlat

1.1.

Gyakran talGyakran taláálkozhatunk azzal a lkozhatunk azzal a problprobléémmáával, hogy egy halmaz elemei val, hogy egy halmaz elemei kköözzüül l ki kell vki kell váálasztanunklasztanunk egyet, egyet, valamilyen tulajdonsvalamilyen tulajdonsáága alapjga alapjáán!n!

Pl.: egPl.: egéész szsz száámokat tartalmazmokat tartalmazóó

ttöömb mb elemei kelemei köözzüül, l, --melyrmelyrőől nem tudjuk, hogy l nem tudjuk, hogy rendezettrendezett--ee--

ki kell vki kell váálasztanunk a lasztanunk a

legkisebbet legkisebbet éés a legnagyobbat.s a legnagyobbat.

A feladat megoldA feladat megoldáássáának algoritmusa, nak algoritmusa, illetve programkilletve programkóódja C dja C ––ben a kben a köövetkezvetkezőő::

Page 35: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

35

TTáárgyszerkezetekrgyszerkezetek

#define TOMBMERET 100#define TOMBMERET 100 int tarolo[TOMBMERET];int tarolo[TOMBMERET];

int min, max;int min, max; ……

min=tarolo[0];min=tarolo[0]; for(i=1;i<TOMBMERET;i++)for(i=1;i<TOMBMERET;i++)

if(min>tarolo[i]) min=tarolo[i];if(min>tarolo[i]) min=tarolo[i]; max=tarolo[0];max=tarolo[0];

for(i=1;i<TOMBMERET;i++)for(i=1;i<TOMBMERET;i++) if(max<tarolo[i]) max=tarolo[i];if(max<tarolo[i]) max=tarolo[i];

Gya

korla

t

Presenter
Presentation Notes
Először definiálunk egy globális változót, melynek azonnal értéket is adunk. Majd deklarálunk változókat: egy egészeket tartalmazó tömböt és két egészet, és helyet foglalunk le nekik a tárban. Majd a program megoldó részében a min változóba bemásoljuk a tarolo tömb legelső elemét. Egy for ciklussal végiglépkedünk a tömb elemein, és közben összehasonlítjuk a min változó értékét a tömbelemekkel. Ha egy tömbelem kisebb, mint a min, akkor az a tömbelem bemásolódik a min változóba, s ő lesz az új legkisebb érték. Az eljárást addig folytatjuk, amíg a tömb végére nem érünk. A legnagyobb elem kiválasztása teljesen hasonló módon történik, csak a feltétel irányát kell megváltoztatnunk a ciklus belsejében!
Page 36: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

36

TTáárgyszerkezetekrgyszerkezetek2.2.

KKöövetkezvetkezőő

feladatainkban azt feladatainkban azt

szeretnszeretnéénk nk eldeldöönteninteni, hogy egy adott , hogy egy adott elem megtalelem megtaláálhatlhatóó--e a te a töömbben, s ha mbben, s ha igen, akkor igen, akkor őő

hháányadik elem?nyadik elem?

E feladatok megoldE feladatok megoldáása a ksa a küüllöönfnfééle le kereskereséési algoritmusokkal lehetssi algoritmusokkal lehetsééges. A ges. A kereskereséések legegyszersek legegyszerűűbb mbb móódszere a dszere a linelineááris keresris keresééss, melynek l, melynek léényeg, hogy nyeg, hogy sorban vesszsorban vesszüük a tk a töömbelemeket, s kmbelemeket, s köözben zben megvizsgmegvizsgááljuk ljuk őőket, hogy megegyeznekket, hogy megegyeznek--e e a keresett elemmel. A keresa keresett elemmel. A kereséés les leááll az ll az elselsőő

megtalmegtaláált elemnlt elemnéél, vagy a tl, vagy a töömb mb G

yako

rlat

Page 37: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

37

TTáárgyszerkezetekrgyszerkezetek

#define TOMBMERET 100#define TOMBMERET 100 int tarolo[TOMBMERET];int tarolo[TOMBMERET];

int e;int e; ……

int linearis(int e)int linearis(int e) {{

for(int i=0;i<TOMBMERET,i++)for(int i=0;i<TOMBMERET,i++) if(e==tarolo[i]) return i;if(e==tarolo[i]) return i;

return return ––1;1; }}

Gya

korla

t

Presenter
Presentation Notes
Először definiálunk egy globális változót, melynek azonnal értéket is adunk Majd deklarálunk változókat: egy egészeket tartalmazó tömböt és egy egészet (e), és helyet foglalunk le nekik a tárban. A feladat megoldásához egy linearis nevű függvényt készítettünk, melyben a visszatérési érték típusa egész (int). A függvény paraméterként megkapja a keresendő elemet. Egy for ciklussal lépkedünk a tömb elemein, és közben összehasonlítjuk az e változó értékét a tömbelemekkel. Ha a változó valamelyik tömbelemmel megegyezik, akkor ennek a ciklus leáll, és a függvény ennek a tömbelemnek az indexével tér vissza. Ha a keresett elem nincs benne a tömbben, akkor a ciklus végiglépked a tömb minden elemén, de a függvény visszatérési értéke egy konkrét szám a –1 lesz, mely jelzi a további feldolgozás számára, hogy nincs megtalált elem a tömbben. Amennyiben a keresett elem a tömbben többször is előfordulna, akkor is csak a legelső előfordulásáról szerez tudomást a függvény, hiszen a ciklus ennél az indexű elemnél megáll. Ha az adott feladatban azt is tudjuk, hogy a tömb nagyság szerint növekvően rendezett, akkor nem feltétlenül szükséges az összes elemet megvizsgálnunk, elég csak az első a keresettnél nagyobb elemig folytatnunk az eljárást!
Page 38: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

38

TTáárgyszerkezetekrgyszerkezetekEgy mEgy máásik igen egyszersik igen egyszerűű

kereskereséési eljsi eljáárráás a s a

binbinááris keresris keresééss, melynek alapfelt, melynek alapfeltéétele, tele, hogy a vizsghogy a vizsgáált tlt töömb rendezett legyen. mb rendezett legyen. LLéényege: a keresett nyege: a keresett éértrtééket elket előőszszöör a tr a töömb mb kköözzéépspsőő

elemeleméével hasonlvel hasonlíítjuk tjuk öössze. Ha ssze. Ha

egyenlegyenlőőek, akkor vek, akkor véége a keresge a kereséésnek. Ha a snek. Ha a keresett elem kisebb, mint a kkeresett elem kisebb, mint a köözzéépspsőő, , akkor a takkor a töömb alsmb alsóó

felfeléében folytatjuk ben folytatjuk

tovtováább a keresbb a kereséést, egyst, egyéébkbkéént pedig a felsnt pedig a felsőő felfeléében. Az eljben. Az eljáárráás ezuts ezutáán rekurzn rekurzíív mv móódon don

folytatfolytatóódik tovdik továább a kivbb a kiváálasztott tlasztott téérfrféélben.lben.

Gya

korla

t

Page 39: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

39

TTáárgyszerkezetekrgyszerkezetek

int binaris(int also, int felso, int e)int binaris(int also, int felso, int e) {{

int kozepso;int kozepso;

while(also<felso+1)while(also<felso+1) {{

kozepso=(also+felso)/2;kozepso=(also+felso)/2;

if(e==tarolo[kozepso]) if(e==tarolo[kozepso]) return kozepso;return kozepso;

if(e>tarolo[kozepso])if(e>tarolo[kozepso]) also=kozepso+1;also=kozepso+1; elseelse

felso=kozepsofelso=kozepso--1;1;

}} return return ––1;1;

}}Gya

korla

t

Presenter
Presentation Notes
Először definiálunk egy globális változót, melynek azonnal értéket is adunk Majd deklarálunk változókat: egy egészeket tartalmazó tömböt és három egészet, s helyet foglalunk le nekik a tárban. A feladat megoldásához egy binaris nevű függvényt készítettünk, melyben a visszatérési érték típusa egész (int). A függvény 3 paramétert kap: a tömb alsó-, és felső határát és a keresendő elemet. A függvény belsejében egy while ciklus található, amely addig fut, amíg a megmaradt keresési tartomány el nem fogy. Belsejében kiszámítjuk a középső elem indexét, s megnézzük, hogy az ehhez tartozó tömbelem megegyezik-e a keresett elemmel. Ha igen, akkor visszatérünk a tömbelem indexével. Ha nem, akkor szűkítjük a keresési tartományt, majd ismételgetjük a folyamatot. Ha a keresési tartomány elfogy, és nem találtuk meg a keresett elemet, akkor a függvény visszatérési értéke most is 1 lesz. Csak rendezett tömbben használható! Viszont sokkal gyorsabb, mint a lineáris keresés.
Page 40: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

40

TTáárgyszerkezetekrgyszerkezetek3.3. RendezRendezéésesses feladatok, melynek feladatok, melynek

megoldmegoldáása sorsa soráán egy (vagy tn egy (vagy tööbb) tbb) töömb mb elemeit szeretnelemeit szeretnéénk nnk nöövekvvekvőő

(vagy (vagy

cscsöökkenkkenőő) sorrendbe ) sorrendbe áállllíítani.tani.SokfSokfééle rendezle rendezéési algoritmus lsi algoritmus léétezik. Az tezik. Az egyszeregyszerűűbbtbbtőől haladunk a bonyolultabbak l haladunk a bonyolultabbak felfeléé. Egy. Egy--egy adott problegy adott problééma sorma soráán n mindig a rendelkezmindig a rendelkezéésre sre áállllóó

ererőőforrforráások sok

éés a konkrs a konkréét ct céél ell eléérréése hatse hatáározzrozzáák meg, k meg, hogy melyik mhogy melyik móódszert cdszert céélszerlszerűű

alkalmazni. Elsalkalmazni. Elsőőkkéént az nt az egyszeregyszerűű

csercseréés s rendezrendezéésselssel fogunk megismerkedni.fogunk megismerkedni.G

yako

rlat

Page 41: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

41

TTáárgyszerkezetekrgyszerkezetekLegyen az adatok szLegyen az adatok szááma n (TOMBMERET). ma n (TOMBMERET).

A feladat az adatok nA feladat az adatok nöövekvvekvőő

sorrendbe sorrendbe rendezrendezéése. A rse. A röögzgzíített itett i--edik elemet edik elemet öösszehasonlsszehasonlíítjuk a ntjuk a náála nagyobb indexla nagyobb indexűű

elemekkel. Ha a vizsgelemekkel. Ha a vizsgáált elem kisebb az lt elem kisebb az ii--edik elemnedik elemnéél, akkor az elemeket l, akkor az elemeket felcserfelcserééljljüük egymk egymáással. E algoritmust ssal. E algoritmust 2 egym2 egymáásba sba áágyazott szgyazott száámlmláállóós ciklussal s ciklussal valvalóóssíítjuk meg. Htjuk meg. Háátrtráánya, hogy csak nya, hogy csak rendezett halmaz elemein mrendezett halmaz elemein műűkköödik. dik. HasonlHasonlóóan, mint a kan, mint a köövetkezvetkezőő, a , a kköözvetlen zvetlen beszbeszúúrráásos rendezsos rendezééss..G

yako

rlat

Page 42: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

42

TTáárgyszerkezetekrgyszerkezetek void csere(tomb a, int n)void csere(tomb a, int n)

{{

int atmeneti, i, j;int atmeneti, i, j; for(i=0;i<nfor(i=0;i<n--1;i++)1;i++)

{ for(j=i+1;j<n;j++){ for(j=i+1;j<n;j++) {{

if(a[i]>a[j])if(a[i]>a[j])

{{ atmeneti=a[i];atmeneti=a[i];

a[i]=a[j];a[i]=a[j];a[j]=atmeneti;a[j]=atmeneti;

} } }}

}}}}G

yako

rlat

Presenter
Presentation Notes
A tömb 2 egymást követő elemeinek vizsgálatából áll az algoritmus. Míg a külső ciklus egyet lép, addig a belső ciklus végiglépked a maradék indexű elemeken, s így az első elem a helyére kerül. A külső ciklus következő lépésében a belső ciklusnak már csak eggyel kevesebb elemen kell végiglépkednie. A külső ciklus csak az utolsó előtti indexű elemig fut, s így rendezetté válik a tömb.
Page 43: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

43

TTáárgyszerkezetekrgyszerkezetekA beszA beszúúrráásos rendezsos rendezéés alapgondolata a s alapgondolata a

kköövetkezvetkezőő: vegy: vegyüük a rendezendk a rendezendőő ttöömbmbüünk elsnk elsőő

elemeleméét, s ezt tekintst, s ezt tekintsüük egy k egy

1 elem1 eleműű

ttöömbnek, ez mbnek, ez öönmagnmagáában biztos, ban biztos, hogy rendezett. Ehhez hozzhogy rendezett. Ehhez hozzáávesszvesszüük a 2. k a 2. elemet, majd rendezzelemet, majd rendezzüük k őőket. Veszzket. Veszzüük a k a 3. elemet, s ezt is rendezz3. elemet, s ezt is rendezzüük. Az eljk. Az eljáárráást st ezutezutáán addig folytatjuk, mn addig folytatjuk, mííg az eredeti g az eredeti „„nagynagy””

ttöömbmbüünk rendezett nem lesz. nk rendezett nem lesz.

Amikor a mAmikor a máár rendezett rr rendezett réésztsztöömbhmbhööz z hozzhozzááveszveszüünk egy nk egy úúj elemet, akkor itt j elemet, akkor itt linelineááris, vagy binris, vagy binááris keresris kereséést vst véégzgzüünk.nk.G

yako

rlat

Page 44: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

44

TTáárgyszerkezetekrgyszerkezetekA keresA kereséés eredms eredméényeknyekéént megkapjuk az nt megkapjuk az úúj j

elem helyelem helyéét a tt a töömbben. Az elem mbben. Az elem elhelyezelhelyezéésséét beszt beszúúrráással vssal véégezzgezzüük, melyet k, melyet úúgy vgy véégzgzüünk el, hogy a mnk el, hogy a máár rendezett r rendezett ttöömbrmbréészletben a beszszletben a beszúúrandrandóó

helythelytőől l

jobbra (njobbra (nöövekvvekvőő

rendezrendezéésnsnéél) esl) esőő ttöömbelemeket eggyel jobbra toljuk, s az mbelemeket eggyel jobbra toljuk, s az

íígy keletkezgy keletkezőő

üüres helyre bemres helyre bemáásoljuk az soljuk az úúj elemet.j elemet.

MegvalMegvalóóssííttáássáára lra lááthatunk pthatunk pééldldáát linet lineááris ris éés bins binááris keresris keresééssel is!ssel is!

Gya

korla

t

Page 45: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

45

TTáárgyszerkezetekrgyszerkezetek int beszurlinearis()int beszurlinearis()

{{

int atmeneti, i, j, h;int atmeneti, i, j, h; for(j=1;j<TOMBMERET;j++)for(j=1;j<TOMBMERET;j++)

{ i=0;{ i=0; while((i<j)&&(tarolo[i]<tarolo[j]))while((i<j)&&(tarolo[i]<tarolo[j]))

i++;i++; h=j; atmeneti=tarolo[h];h=j; atmeneti=tarolo[h];

while(i<h)while(i<h) { tarolo[h]=tarolo[h{ tarolo[h]=tarolo[h--1]; h1]; h----; }; }

tarolo[h]=atmeneti;tarolo[h]=atmeneti; }return 0;}return 0;

}}Gya

korla

t

Presenter
Presentation Notes
Először definiálunk egy globális változót, melynek azonnal értéket is adunk. Majd deklarálunk változókat: egy egészeket tartalmazó tömböt és négy egészet. A j változó mondja meg, hogy mekkora az aktuálisan rendezendő résztömb mérete (ez a résztömb már �j-1-ig rendezett). A megoldó függvényünk lényegében egy for ciklusból áll, amely belsejében lineáris kereséssel (az első while ciklus) megkeressük, hogy hová kell a soron következő tömbelemet beszúrni. A beszúrandó elemet eltároljuk az atmeneti változóba, mert szükségünk lesz a helyére. A második while ciklussal eggyel jobbra toljuk a megfelelő tömbelemeket, így egy üres hely keletkezik a beszúrandó elemünknek. Majd az atmeneti változóból átmásoljuk a beszúrandó elemet a számára felszabadított helyre.
Page 46: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

46

TTáárgyszerkezetekrgyszerkezetek int beszurbinaris()int beszurbinaris()

{{

int atmeneti, j, h, also, felso, kozepso;int atmeneti, j, h, also, felso, kozepso; for(j=1;j<TOMBMERET;j++)for(j=1;j<TOMBMERET;j++)

{ also=0; felso=j; kozepso=0;{ also=0; felso=j; kozepso=0; while(also<felso+1)while(also<felso+1)

{ kozepso=(also+felso)/2;{ kozepso=(also+felso)/2; if(tarolo[j]>=tarolo[kozepso])if(tarolo[j]>=tarolo[kozepso])

also=kozepsoalso=kozepso--1;1; elseelse

felso=kozepsofelso=kozepso--1;1;

}}

h=j; atmeneti=tarolo[h];h=j; atmeneti=tarolo[h]; while(also<h)while(also<h)

{{

tarolo[h]=tarolo[htarolo[h]=tarolo[h--1]; h1]; h----;; }}

tarolo[h]=atmeneti;tarolo[h]=atmeneti; }}

return 0;return 0;

}}G

yako

rlat

Presenter
Presentation Notes
Először definiálunk egy globális változót, melynek azonnal értéket is adunk. Majd deklarálunk változókat: egy egészeket tartalmazó tömböt és hat egészet. A beszurbinaris függvény nagyon hasonlít a beszurlinearis függvényre, az eltérés az első while ciklusnál található. Itt bináris keresést használunk!
Page 47: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

47

TTáárgyszerkezetekrgyszerkezetekA A buborbuboréékrendezkrendezééss lléényege: a tnyege: a töömb elejmb elejéérrőől l

a va véége felge feléé

haladva a szomszhaladva a szomszéédos dos elemeket hasonlelemeket hasonlíítjuk tjuk öössze, s amennyiben ssze, s amennyiben a ta töömb elejmb elejééhez khez köözelebb lzelebb léévvőő

elem a elem a

nagyobb, akkor a knagyobb, akkor a kéét elemet felcsert elemet felcserééljljüük k (szok(szokáás elemcsers elemcseréés rendezs rendezéésnek is snek is nevezni). Ha elnevezni). Ha eléérjrjüük a tk a töömb vmb vééggéét, akkor t, akkor a legnagyobb elem a ta legnagyobb elem a töömb vmb vééggéére kerre kerüül l (felsz(felszááll), ll), íígy a rendezendgy a rendezendőő

ttöömb hossza mb hossza

eggyel megreggyel megröövidvidüül. Erre a tl. Erre a töömbre mbre úújra jra alkalmazzuk az eljalkalmazzuk az eljáárráást. A rendezst. A rendezéés addig s addig tart, amtart, amííg a tg a töömbmmbmééret 1 nem lesz.ret 1 nem lesz.G

yako

rlat

Page 48: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

48

TTáárgyszerkezetekrgyszerkezetek int buborek()int buborek()

{{

int atmeneti, j, i;int atmeneti, j, i; for(j=TOMBMERETfor(j=TOMBMERET--2;j>=0;j2;j>=0;j----))

for(i=0;i<=j;i++)for(i=0;i<=j;i++) if(tarolo[i+1]<tarolo[i]) /*csere*/if(tarolo[i+1]<tarolo[i]) /*csere*/

{{

/*kell*//*kell*/ atmeneti=tarolo[i];atmeneti=tarolo[i];

tarolo[i]=tarolo[i+1];tarolo[i]=tarolo[i+1]; tarolo[i+1]=atmeneti;tarolo[i+1]=atmeneti; }}

return 0;return 0; }}G

yako

rlat

Presenter
Presentation Notes
Először definiálunk egy globális változót, melynek azonnal értéket is adunk. Majd deklarálunk változókat: egy egészeket tartalmazó tömböt és három egészet. A buborék függvény két, egymásba ágyazott for ciklusból áll. A külső for ciklus ciklusváltozója (j) mondja azt meg, hogy az adott menetben a legnagyobb elemet meddig kell felvinni, vagyis azt, hogy a tömbben melyik az utolsó index, ahol még nem biztos, hogy a megfelelő elem áll. A j a példában TOMBMERET-2-től 0-ig veszi fel az értékeit. A belső for ciklus ciklusváltozója (i) pedig azt mondja meg, hogy a szomszédos elemek összehasonlításakor egy meneten belül a tömb hányadik eleménél tartunk. Ebben található a szomszédos elemek vizsgálata is. Ha a nagyobb indexű elem a kisebb, akkor megcseréljük e két elemet.
Page 49: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

49

TTáárgyszerkezetekrgyszerkezetekA megismertA megismert

rendezrendezéési eljsi eljáárráásokon ksokon kíívvüüll

llééteznek mteznek méég tovg továábbi, jbbi, jóóval bonyolultabb val bonyolultabb eljeljáárráások is, melyek gyakorlati sok is, melyek gyakorlati megvalmegvalóóssííttáása nem feladatunk, msa nem feladatunk, méégis gis megemlmegemlíítem tem őőket. Ilyenek: Shellket. Ilyenek: Shell--

rendezrendezéés (Donald Shell 1959), s (Donald Shell 1959), gyorsrendezgyorsrendezéés (Quicksort: C. A. R. Hoare s (Quicksort: C. A. R. Hoare 1962), rendez1962), rendezéés fastrukts fastruktúúrráával, val, lláádarendezdarendezéés, s, éés az s az öösszefsszefééssüüllééses ses rendezrendezéés. A Shell ms. A Shell móódszer ldszer léényege az, nyege az, hogy egymhogy egymááststóól tl táávolabb volabb áállllóó

elemeket elemeket

hasonlhasonlíít t öössze, ssze, íígy azok hamarabb gy azok hamarabb Gya

korla

t

Page 50: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

50

TTáárgyszerkezetekrgyszerkezetekA gyorsrendezA gyorsrendezéés a csere elvs a csere elvéén alapszik, elve n alapszik, elve

a ka köövetkezvetkezőő: kiv: kiváálasztjuk a tlasztjuk a töömb kmb köözzéépspsőő elemeleméét , majd balrt , majd balróól megkeressl megkeressüük azt az k azt az

elselsőő

elemet , amely ennelemet , amely ennéél nem kisebb, l nem kisebb, jobbrjobbróól pedig azt az elemet, amely ennl pedig azt az elemet, amely ennéél l nem nagyobb. Kicsernem nagyobb. Kicserééljljüük a kk a kéét elemet, t elemet, éés s folytatjuk a cserfolytatjuk a cseréélgetlgetéést addig, amst addig, amííg a bal g a bal oldalon a koldalon a köözzéépspsőő

elemnelemnéél nem nagyobb, l nem nagyobb,

jobb oldalon pedig mind kisebb elemek jobb oldalon pedig mind kisebb elemek áállnak. Ezt kllnak. Ezt köövetvetőően rekurzen rekurzíív hv híívváással ssal rendezzrendezzüük a tk a töömb alsmb alsóó

éés felss felsőő

felfeléét, s t, s íígy gy

tovtováább.bb.Gya

korla

t

Page 51: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

51

TTáárgyszerkezetekrgyszerkezetekA gyorsrendezA gyorsrendezéést a legtst a legtööbb magas szintbb magas szintűű

programozprogramozáási nyelv besi nyelv beééppíített mtett móódon don tartalmazza, s tartalmazza, s íígy kgy köönnyen nnyen felhasznfelhasznáálhatlhatóó. A m. A máásik hsik háárom eljrom eljáárráást st specispeciáális esetekben szoktlis esetekben szoktáák alkalmazni. k alkalmazni. Pl. a lPl. a láádarendezdarendezéést akkor hasznst akkor hasznááljuk, ha ljuk, ha az elemek az elemek éértrtéékkkkéészlete kicsi, az szlete kicsi, az öösszefsszefééssüülléésest pedig akkor, ha sest pedig akkor, ha rendelkezrendelkezéésre sre ááll kll kéét rendezett tt rendezett töömbmbüünk, s nk, s belbelőőllüük szeretnk szeretnéénk egy rendezett nk egy rendezett harmadikat kharmadikat kéészszííteni.teni.

Gya

korla

t

Page 52: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

52

TTáárgyszerkezetekrgyszerkezetekI.I.

HomogHomogéén adatszerkezetekn adatszerkezetek

2.2.

AsszociatAsszociatíív adatszerkezetekv adatszerkezetek

–– a a TTÁÁBLBLÁÁZATZAT, mely tekinthet, mely tekinthetőő

az 1 az 1

dimenzidimenzióós ts töömb mb ááltalltaláánosnosííttáássáának.nak. A tA tááblbláázat elemei zat elemei öösszetettek: van egy sszetettek: van egy

kulcskulcs--, ill. egy adatr, ill. egy adatréészszüük. A 2 rk. A 2 réész sz ttíípuspusáának nem kell megegyeznie. A nak nem kell megegyeznie. A kulcskulcséértrtéékeknek mindig egyedieknek kell keknek mindig egyedieknek kell lennilenniüük. Az adatk. Az adatéértrtéékek viszont kek viszont tetsztetszőőlegesek lehetnek. Alkalmazhatunk legesek lehetnek. Alkalmazhatunk rráájuk folytonos, ill. szjuk folytonos, ill. széétsztszóórt rt áábrbráázolzoláást st (l(lááncolt listncolt listáát) is. Dinamikusak!t) is. Dinamikusak!

Elmélet

Page 53: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

53

TTáárgyszerkezetekrgyszerkezetekHogyan hajthatHogyan hajthatóók vk véégre ezen az gre ezen az adatszerkezeten a tanult madatszerkezeten a tanult műűveletek?veletek?1.1.

LLéétrehoztrehozáás: a ts: a tááblbláázat szerkezetzat szerkezetéének nek

kialakkialakííttáássáát jelenti.t jelenti.2.2.

BBőővvííttéés: szerkezet fs: szerkezet füüggggőő

a megvala megvalóóssííttáása, sa,

soros tsoros tááblbláázat esetzat esetéén az idn az időőben folytonosan ben folytonosan ttöörtrtéénik, az nik, az úúj elem a tj elem a tááblbláázat vzat vééggéére kerre kerüül.l.

3.3.

TTöörlrléés: a logikai vs: a logikai vááltozata esetltozata esetéén az n az utolsutolsóó

elemmel felelemmel felüüllíírjuk az elrjuk az előőzzőőt, fizikai t, fizikai

ttöörlrléés, ha sok van a ts, ha sok van a tááblbláázatban, akkor az zatban, akkor az adatszerkezetet adatszerkezetet úújra kell szervezni.jra kell szervezni.

Elmélet

Page 54: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

54

TTáárgyszerkezetekrgyszerkezetek4.4.

Csere: csak adatelemekre hajthatCsere: csak adatelemekre hajthatóó

vvéégre, gre,

kulcsot nem cserkulcsot nem cserééllüünk.nk.5.5.

RendezRendezéés: nincs.s: nincs.

6.6.

KeresKereséés: teljes.s: teljes.7.7.

ElEléérréés: szekvencis: szekvenciáális.lis.

8.8.

FeldolgozFeldolgozáás: alapja a kulcs.s: alapja a kulcs.

SpeciSpeciáális vlis vááltozatai:ltozatai:––

ÖÖnnáátrendeztrendezőő

ttááblbláázat, melyben az zat, melyben az ééppen ppen

feldolgozott elemet utolsfeldolgozott elemet utolsóó

mműűveletkveletkéént a nt a ttááblbláázat elejzat elejéére helyezzre helyezzüük. Ez a tk. Ez a tááblbláázat zat mmáár csak szr csak széétsztszóórtan rtan áábrbráázolhatzolhatóó!!

Page 55: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

55

TTáárgyszerkezetekrgyszerkezetekSpeciSpeciáális vlis vááltozatai:ltozatai:

––

Rendezett tRendezett tááblbláázat fzat főő

jellegzetessjellegzetesséége, ge, hogy a kulcsok szerint rendezetten thogy a kulcsok szerint rendezetten táárolja rolja az elemeit. Feldolgozaz elemeit. Feldolgozáássáának az alapja a nak az alapja a rendezettsrendezettséég, s az ezen alapulg, s az ezen alapulóó

linelineááris ris

kereskereséés!s!––

KulcstranszformKulcstranszformáácicióós ts tááblbláázat fzat főő

jellegzetessjellegzetesséége, hogy benne ge, hogy benne megvalmegvalóóssííthatthatóó

a ka köözvetlen elzvetlen eléérréés is. s is.

Ebben a tEbben a tááblbláázatban az elemek sorrendjzatban az elemek sorrendjéét t egy egy úún. Hash (hasn. Hash (hasííttóó) f) füüggvggvéény hatny hatáározza rozza meg, mely a kulcsokat a rendelkezmeg, mely a kulcsokat a rendelkezéésre sre áállllóó

ttáárhelyekre krhelyekre kéépezi le.pezi le.Elmélet

Page 56: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

56

TTáárgyszerkezetekrgyszerkezetekI.I.

HomogHomogéén adatszerkezetekn adatszerkezetek

3.3.

SzekvenciSzekvenciáális (,vagy linelis (,vagy lineááris) ris) adatszerkezetekadatszerkezetek

––

melyek kmelyek köözzöös s

jellemzjellemzőője, hogy az adatelemeik kje, hogy az adatelemeik köözzöött tt jjóól definil definiáált viszony lt viszony ááll fenn. Az adott ll fenn. Az adott elem pontosan 2 db melem pontosan 2 db máásik elemmel sik elemmel ááll ll kapcsolatban, a kivkapcsolatban, a kivéételes tulajdonsteles tulajdonsáággúú

elemektelemektőől eltekintve. Minden ilyen l eltekintve. Minden ilyen adatszerkezet dinamikus feladatszerkezet dinamikus felééppííttééssűű! ! Melyek ezek az adatszerkezetek?Melyek ezek az adatszerkezetek?

LISTALISTA, , VEREMVEREM, , SORSOR, , éés s SZTRINGSZTRINGElmélet

Page 57: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

57

TTáárgyszerkezetekrgyszerkezetekLista Lista ––

olyan adatszerkezet, amelyben egy olyan adatszerkezet, amelyben egy

elemnek pontosan egy relemnek pontosan egy ráákköövetkezvetkezőője je van, kivvan, kivééve az utolsve az utolsóó

adatelemet adatelemet éés s

pontosan egy megelpontosan egy megelőőzzőője van, kivje van, kivééve az ve az elselsőőt. Ezen az adatszerkezeten specit. Ezen az adatszerkezeten speciáális lis jeljelööllééseket seket éés ms műűveleteket veleteket éértelmezrtelmezüünk:nk:

Lista jele: q=[xLista jele: q=[x11

,x,x22

,,……,x,xnn

] (] (üüres lista: []);res lista: []);Lista feje: head =xLista feje: head =x11

;;

Lista farka: toid =[xLista farka: toid =[x22

,,……,x,xnn

];];Elmélet

Page 58: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

58

TTáárgyszerkezetekrgyszerkezetekSpeciSpeciáális jellis jelöölléések sek éés ms műűveletek:veletek:Lista vLista véége: End =xge: End =xnn

;;

Lista mLista méérete: Size n=rete: Size n=||q q ||;;HozzHozzááfféérréés: Access q[i]=xs: Access q[i]=xii

, ha i , ha i ЄЄ[1,n][1,n]

--nek, akkor az nek, akkor az üüres listres listáát t éértrtüük el;k el;Allista kAllista kéépzpzéése: q[i..j]=[xse: q[i..j]=[xii

,,……,x,xjj

], vagy], vagy

q[..3]=[xq[..3]=[x11

,x,x22

,x,x33

];];ListListáák k öösszefsszefűűzzéése: Concatenationse: Concatenation

legyen r=[ylegyen r=[yjj

,,……,y,ymm

], akkor ], akkor q&r=[xq&r=[xii

,...,x,...,xnn

,y,yjj

,,……,y,ymm

]]Elmélet

Page 59: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

59

TTáárgyszerkezetekrgyszerkezetek

Hogyan hajthatHogyan hajthatóók vk véégre ezen az gre ezen az adatszerkezeten a tanult madatszerkezeten a tanult műűveletek?veletek?1.1. LLéétrehoztrehozáás: az elemek felsorols: az elemek felsoroláássáát jelenti.t jelenti.2.2.

BBőővvííttéés: bs: báárhol megtehetrhol megtehetőő

a lista listáában.ban.

qq’’=q[..k]&[e]&q[k+1..]=q[..k]&[e]&q[k+1..]3.3.

TTöörlrléés: csak a fizikai ts: csak a fizikai töörlrléés lehetss lehetsééges, ges, ez viszont bez viszont báárhol a listrhol a listáában.ban.

qq’’’’=q[..k=q[..k--1]&q[k+1..]1]&q[k+1..]4.4.

Csere: Csere: öösszefsszefűűzzééssel ez is megvalssel ez is megvalóóssííthatthatóó..

qq’’’’’’=q[..k=q[..k--1]&[e]&q[k+1..]1]&[e]&q[k+1..]Elmélet

Page 60: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

60

TTáárgyszerkezetekrgyszerkezetek5.5.

RendezRendezéés: s: éértelmezhetrtelmezhetőő. Folytonos . Folytonos áábrbráázolzoláás esets esetéén bn báármelyik algoritmus rmelyik algoritmus hasznhasznáálhatlhatóó, sz, széétsztszóórtnrtnáál viszont csak a l viszont csak a beszbeszúúrráásos rendezsos rendezéés megengedett.s megengedett.

6.6.

KeresKereséés: folytonos s: folytonos áábrbráázolzoláásnsnáál a teljes l a teljes éés a bins a binááris, szris, széétsztszóórtnrtnáál a linel a lineááris ris alkalmazhatalkalmazhatóó..

7.7.

ElEléérréés: erre a ms: erre a műűveletre vezettveletre vezettüük be az k be az Access funkciAccess funkcióót, mely kt, mely köözvetlen elzvetlen eléérrééstst

tesz lehettesz lehetőővvéé..8.8.

FeldolgozFeldolgozáás: az els: az előőzzőőkköön mn műűveletekenveleteken

alapul.alapul.Elmélet

Page 61: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

61

TTáárgyszerkezetekrgyszerkezetekListListáák k áábrbráázolzoláása: mint az elsa: mint az előőzzőőekben ekben

llááthatthatóó

volt, megtehetvolt, megtehetőő

folytonosan folytonosan éés s szszéétsztszóórtan is! Mindkrtan is! Mindkéét t áábrbráázolzoláási si mmóódja fontos az adatszerkezetnek. Ha dja fontos az adatszerkezetnek. Ha szszéétsztszóórtan rtan áábrbráázoljuk, akkor zoljuk, akkor ááltalltaláában ban kkéétirtiráánynyúú, vagy l, vagy lááncolt listncolt listáát t hasznhasznáálunk!lunk!

Igen fontosak a programozIgen fontosak a programozáásban a lista sban a lista fejfejéénnéél l éés vs vééggéénnéél elvl elvéégezhetgezhetőő

mműűveletek, most ezekkel fogunk veletek, most ezekkel fogunk rréészletesebben foglalkozni! szletesebben foglalkozni! Elmélet

Page 62: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

62

TTáárgyszerkezetekrgyszerkezetek

Melyek ezek?Melyek ezek?1.1.

Fej elFej eléérréése: Access Head se: Access Head ––

q[1]; q[1];

2.2.

BBőővvííttéés a lista fejs a lista fejéénnéél: Push l: Push ––

[x]&q;[x]&q;3.3.

Fej tFej töörlrléése (elhagyse (elhagyáása): Pop sa): Pop ––

q[2..];q[2..];

4.4.

VVéég elg eléérréése: Access End se: Access End ––

q[q[||qq||];];5.5.

BBőővvííttéés a vs a vééggéére: Inject re: Inject ––

q&[x];q&[x];

6.6.

TTöörlrléés a vs a vééggéén: Eject n: Eject ––

q[.. q[.. ||qq||

--1].1].Ezen mEzen műűveletek segveletek segíítstsééggéével lehet vel lehet

specispeciáális listlis listáákat lkat léétrehozni!trehozni!Elmélet

Page 63: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

63

TTáárgyszerkezetekrgyszerkezetekMiMiéért van szrt van szüükskséég a dinamikus g a dinamikus

adatszerkezetek hasznadatszerkezetek hasznáálatlatáára?ra?NNéézzzzüünk egy pnk egy pééldldáát!t!

ÍÍrjunk programot, amely egy rjunk programot, amely egy

Henger nevHenger nevűű

struktstruktúúrráában tban táárolt sugrolt sugáár, r, magassmagassáág g éés a ts a téérfogat adatokat krfogat adatokat kéétirtiráánynyúú

listlistáába fba fűűzi! Fzi! Füüggvggvéények olvassnyek olvassáák be az k be az adatokat, kadatokat, kéészszíítik el a ltik el a lááncot, ncot, éés elvs elvéégzik a gzik a szszüüksksééges mges műűveleteket (beszveleteket (beszúúrráás, ts, töörlrléés, s, kikiíírráás). A ls). A léétrehozandtrehozandóó

adatstruktadatstruktúúrráánk nk

nemcsak lista, hanem faszerkezet kialaknemcsak lista, hanem faszerkezet kialakííttáássáát t is lehetis lehetőővvéé

teszi. Magteszi. Magáát a struktt a struktúúrráát egy fejlt egy fejlééc c

ffáájlban tjlban táároljuk, melyet a kroljuk, melyet a küüllöönfnfééle le ffüüggvggvéényeinkben hasznnyeinkben hasznáálunk fel.lunk fel.G

yako

rlat

Page 64: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

64

TTáárgyszerkezetekrgyszerkezetek #include <stdio.h>#include <stdio.h>

#include <stdlib.h>#include <stdlib.h>#include <math.h>#include <math.h>#define PI 3.141592654#define PI 3.141592654typedef struct hr {typedef struct hr {

int sugar;int sugar;int magassag;int magassag;double terfogat;double terfogat;

/* /* öönhivatkoznhivatkozáás ts tíípusnpusnéévvel */vvel */struct hr *kov, *elozo;struct hr *kov, *elozo;} Henger;} Henger;

/* el/* előődeklardeklaráácicióók kk köövetkeznek */vetkeznek */Gya

korla

t

Presenter
Presentation Notes
A malloc függvény használata: E függvény segítségével a dinamikus memóriából (heap) a paraméterében megadott méretű részt foglalhatunk le! Visszatérési értéke, az erre a memóriaterületre mutató void típusú mutató lesz, amelyre megfelelő típusátalakítást kell alkalmaznunk! Később a free() használatával ezt a területet felszabadíthatjuk. A függvény képes hibaellenőrzést is végezni, amelyet most nem használtunk ki. _Ha elfogy a heap, akkor a visszatérési értéke NULL.�Követendő megoldás a következő:�uj=(struct vetel *)malloc(sizeof(stuct vetel));�if(!uj)�{�printf(„Elfogyott a memória.”);�exit(1);�} Strázsaelemek: nem tartalmaznak adatot, egyetlen szerepük az, hogy a határt jelképezzék (ne futhassunk le a listáról)!
Page 65: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

65

TTáárgyszerkezetekrgyszerkezetek Henger* Olvas(Henger **u);Henger* Olvas(Henger **u);

void KiirElore(Henger* e);void KiirElore(Henger* e);void KiirHatra(Henger* u);void KiirHatra(Henger* u);void BeszurV(Henger **e, Henger **v,void BeszurV(Henger **e, Henger **v,

int r, int h);int r, int h);Henger* Torol(Henger *e, Henger **u,Henger* Torol(Henger *e, Henger **u,

int x1, int y1);int x1, int y1);/* protot/* prototíípusok */pusok *//* LISTAFG.H *//* LISTAFG.H */

A tA tööbbi fbbi füüggvggvéényt a Devnyt a Dev--C++ fejlesztC++ fejlesztőői i kköörnyezet segrnyezet segíítstsééggéével fogom bemutatni!vel fogom bemutatni!G

yako

rlat

Presenter
Presentation Notes
A malloc függvény használata: E függvény segítségével a dinamikus memóriából (heap) a paraméterében megadott méretű részt foglalhatunk le! Visszatérési értéke, az erre a memóriaterületre mutató void típusú mutató lesz, amelyre megfelelő típusátalakítást kell alkalmaznunk! Később a free() használatával ezt a területet felszabadíthatjuk. A függvény képes hibaellenőrzést is végezni, amelyet most nem használtunk ki. _Ha elfogy a heap, akkor a visszatérési értéke NULL.�Követendő megoldás a következő:�uj=(struct vetel *)malloc(sizeof(stuct vetel));�if(!uj)�{�printf(„Elfogyott a memória.”);�exit(1);�} Strázsaelemek: nem tartalmaznak adatot, egyetlen szerepük az, hogy a határt jelképezzék (ne futhassunk le a listáról)!
Page 66: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

66

TTáárgyszerkezetekrgyszerkezetekA A Listafg.cppListafg.cpp áállomllomáánynak az alnynak az aláábbi fbbi füüggvggvéényeket nyeket

kell tartalmaznia:kell tartalmaznia: Olvas()Olvas() ffüüggvggvéény ny éértrtéékkkkéént visszaadja a lnt visszaadja a láánc nc

elejelejéére, ill. egy paramre, ill. egy paramééteren keresztteren keresztüül a ll a láánc nc vvééggéére mutatre mutatóó

pointert. Beolvassa az adatok pointert. Beolvassa az adatok

darabszdarabszáámmáát, dinamikusan lt, dinamikusan léétrehozza a ltrehozza a láánc nc elemeit a malloc() felemeit a malloc() füüggvggvéénnyel, majd kisznnyel, majd kiszáámmíítja tja a ta téérfogatot, ill. lrfogatot, ill. lááncba fncba fűűzi az elemeket.zi az elemeket.

KiirElore()KiirElore() ffüüggvggvéény a paramny a paramééterben kapja a terben kapja a lláánc elsnc elsőő

elemeleméére mutatre mutatóó

pointert.pointert.

KiirHatra()KiirHatra() ffüüggvggvéény a paramny a paramééterlistterlistáán kapja a n kapja a lláánc utolsnc utolsóó

elemeleméére mutatre mutatóó

pointert.pointert.

Gya

korla

t

Presenter
Presentation Notes
Kulcs: egyértelmű azonosító (struktúra attribútuma) Rendezési kulcs: e szerint növekvő (vagy csökkenő) sorrend definiálható. Main: főprogram a C-ben.
Page 67: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

67

TTáárgyszerkezetekrgyszerkezetekA A Listafg.cppListafg.cpp áállomllomáánynak az alnynak az aláábbi fbbi füüggvggvéényeket nyeket

kell tartalmaznia:kell tartalmaznia: BeszurV()BeszurV() ffüüggvggvéény paramny paramééterlistterlistáán kapja a ln kapja a láánc nc

elselsőő

elemeleméére mutatre mutatóó

pointert pointert éés a beszs a beszúúrandrandóó (sugar, magassag) adatokat. A f(sugar, magassag) adatokat. A füüggvggvéény a lny a láánc nc

vvééggéére szre szúúrja be az rja be az úúj listaelemet j listaelemet éés kiszs kiszáámmíítja a tja a henger thenger téérfogatrfogatáát. Visszatt. Visszatéérréési si éértrtéékkkkéént a lnt a láánc nc elejelejéére re éés vs vééggéére mutatre mutatóó

pointerek megvpointerek megvááltozott ltozott

éértrtéékkéét szolgt szolgááltatja.ltatja. Torol()Torol() ffüüggvggvéény a paramny a paramééterlistterlistáán kapja a ln kapja a láánc nc

elsoelso éés s utolsoutolso elemeleméére mutatre mutatóó

pointert, valamint pointert, valamint a ta töörröölni klni kíívváánt henger adatait. Az nt henger adatait. Az utolso utolso mutatmutatóó

megvmegvááltozott ltozott éértrtéékkéét pointerben (t pointerben (**utolso**utolso) adja. ) adja. Gya

korla

t

Presenter
Presentation Notes
Kulcs: egyértelmű azonosító (struktúra attribútuma) Rendezési kulcs: e szerint növekvő (vagy csökkenő) sorrend definiálható. Main: főprogram a C-ben.
Page 68: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

68

TTáárgyszerkezetekrgyszerkezetekG

yako

rlat

•A lista strázsaelemeinek inicializálása.

•Helyfoglalás a struktúra számára.

•A henger adatainak beolvasása és a térfogatának kiszámítása:

R2*PI*magasság képlet alapján.

•Strázsaelemek újbóli beállítása.

Page 69: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

69

TTáárgyszerkezetekrgyszerkezetekG

yako

rlat

A while ciklus figyeli a lánc végét, amelyet a NULL értékű

mutató jelez.

Tovább kell lépnünk a következőre különben végtelen ciklust kapunk!

Itt a visszamutató

pointert kell az előző

elemre állítani a láncon való

végiglépkedés érdekében!

Page 70: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

70

TTáárgyszerkezetekrgyszerkezetekG

yako

rlat

•Paraméterei a következők:

a lánc első

és utolsó elemére mutató

pointerek, valamint a beszúrandó

sugár

és magassá

adatok.

•Az eljárás eredményeként megváltoznak a lánc elejére és a végére mutató

pointerek

értékei.

Page 71: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

71

TTáárgyszerkezetekrgyszerkezetekG

yako

rlat

Paraméte- rek:

a szokott mutatók és a henger adatai. Az utolso mutató

új

értékét pointerben kell megadni.

Vissza- adott

értéke: pointer.

Page 72: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

72

TTáárgyszerkezetekrgyszerkezetekG

yako

rlat

A main() függvény bemutatja a Henger struktúrából felépített lánc módosítását, új elem beszúrását, listázását, és törlését.

Page 73: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

73

TTáárgyszerkezetekrgyszerkezetekVideVideóó!!

Gya

korla

t

Page 74: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

74

TTáárgyszerkezetekrgyszerkezetekMiMiéért van szrt van szüükskséég a dinamikus g a dinamikus

adatszerkezetek hasznadatszerkezetek hasznáálatlatáára?ra?NNéézzzzüünk egy pnk egy pééldldáát!t!

T.fT.f., hogy ., hogy ááruhruháázi eladzi eladáások sok

adatait kell tadatait kell táárolnunk. Az eladrolnunk. Az eladáásokat egy sokat egy vetelvetel nevnevűű

struktstruktúúra reprezentra reprezentáálja, egylja, egy--egy egy intint ttíípuspusúú

mezmezőővel az vel az áárukrukóódnak, ill. az eladott dnak, ill. az eladott darabszdarabszáámnak a jelmnak a jelöölléésséére, tovre, továábbbbáá

lléétezik egy tezik egy

charchar c[1000]c[1000] ttöömb, valamifmb, valamifééle le termterméékinformkinformáácicióó

ttáárolroláássáára. Ha azt tudjuk, ra. Ha azt tudjuk,

hogy 1000hogy 1000--nnéél tl tööbb adat biztosan nem jbb adat biztosan nem jöön, n, akkor: akkor: structstruct vetelvetel v[1000]v[1000] lesz a struktlesz a struktúúrráánk! nk! Ha azonban csak nHa azonban csak nééhháány vny váássáárlrláási adatunk si adatunk van, akkor van, akkor óóririáási pazarlsi pazarláást vst véégeztgeztüünk!nk!G

yako

rlat

Page 75: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

75

TTáárgyszerkezetekrgyszerkezetekE problE problééma megoldma megoldáássáára alkalmazhatunk pl. ra alkalmazhatunk pl.

kkéétirtiráánybannyban

llááncolt listncolt listáát. A lista elejt. A lista elejéén n éés s vvééggéén n úúgynevezett strgynevezett stráázsaelemmel. Az zsaelemmel. Az elelőőzzőőekben leekben leíírt feladatot egyszerrt feladatot egyszerűűssíítjtjüük k éés s a a vetelvetel struktstruktúúrráában csak az ban csak az arukodarukod éés az s az eladottdbeladottdb mezmezőőket szerepeltetjket szerepeltetjüük!k!

A lA lááncolt lista alapja az, hogy a struktncolt lista alapja az, hogy a struktúúrrááinkat inkat kiegkiegéészszíítjtjüük 2 mutatk 2 mutatóóval, melyek tval, melyek tíípusa pusa structstruct vetelvetel**. Az egyik a t. Az egyik a táárolrolóó

listlistáában az ban az

elemet megelelemet megelőőzzőőre re ((structstruct vetelvetel **elozoelozo)), a , a mmáásik az sik az őőt kt köövetvetőőre re ((structstruct vetelvetel **kovetkezokovetkezo)) mutat. Az elemek mutat. Az elemek íígy gy öösszefsszefűűzve lzve lááncot alkotnak!ncot alkotnak!G

yako

rlat

Page 76: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

76

TTáárgyszerkezetekrgyszerkezetekA lista kezdetben A lista kezdetben üüres, csak a hatres, csak a hatáárokat jelzrokat jelzőő

2 2

strstráázsaelem van benne. zsaelem van benne. ÚÚj elem beszj elem beszúúrráása sa úúgy tgy töörtrtéénik, hogy elindulunk a lista 1. nik, hogy elindulunk a lista 1. elemelemééttőől, l, éés a mutats a mutatóók mentk mentéén addig n addig lléépkedpkedüünk a listnk a listáában, amban, amííg a beszg a beszúúrandrandóó

elem helyelem helyéét meg nem talt meg nem talááljuk. Mivel a listljuk. Mivel a listáát t nnöövekvvekvőő

elemsorrenddel elemsorrenddel ééppíítjtjüük fel, ezk fel, ezéért rt

az az úúj elemet azon kj elemet azon kéét elem kt elem köözzéé

kell kell beszbeszúúrni, ahol az rni, ahol az „„1.1.””

elem kulcsa melem kulcsa méég g

kisebb, mint a beszkisebb, mint a beszúúrandrandóéóé, de a , de a „„2.2.””

elemeleméé mmáár nagyobb! A beszr nagyobb! A beszúúrráás maga egyszers maga egyszerűű

mutatmutatóó

ááttáállllííttáás lesz: az s lesz: az „„1.1.””

kovetkezokovetkezo éés a s a „„2.2.””

elozoelozo mutatmutatóójjáát az t az úúj elemre j elemre áállllíítjuk! tjuk! G

yako

rlat

Page 77: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

77

TTáárgyszerkezetekrgyszerkezetekMMáár csak az r csak az úúj elem mutatj elem mutatóóit kell beit kell beáállllíítanunk: tanunk:

az az elozoelozo mutasson az mutasson az „„1.1.””

elemre a elemre a kovetkezokovetkezo a a „„2.2.””

elemre! Kelemre! Kéész a belsz a belááncolncoláás! s!

Ha minden elem kulcsa kisebb, mint a Ha minden elem kulcsa kisebb, mint a beszbeszúúrandrandóéóé

(,vagy m(,vagy méég nincs is elem a g nincs is elem a

listlistáában), akkor a lban), akkor a léépkedpkedéés sors soráán a n a listavlistavééget jelentget jelentőő

strstráázsaelemig jutunk. zsaelemig jutunk.

Ekkor ezen elem elEkkor ezen elem eléé

kell beszkell beszúúrnunk, rnunk, ugyanazzal az algoritmussal, mint amit az ugyanazzal az algoritmussal, mint amit az elelőőbb hasznbb hasznááltunk.ltunk.

ImplementImplementáálláása Csa C--ben a kben a köövetkezvetkezőő::

Gya

korla

t

Page 78: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

78

TTáárgyszerkezetekrgyszerkezetek #include <stdio.h>#include <stdio.h>

struct vetelstruct vetel{{

int arukod;int arukod;

/* ez a kulcsmez/* ez a kulcsmezőő

*/*/

int eladottdb;int eladottdb;struct vetel *kovetkezo;struct vetel *kovetkezo;struct vetel *elozo;struct vetel *elozo;

};};struct vetel *kezdo;struct vetel *kezdo;struct vetel *veg;struct vetel *veg;

/* str/* stráázsaelemek */zsaelemek */

struct vetel *aktualis;struct vetel *aktualis;struct vetel *uj;struct vetel *uj;struct vetel *keres(int);struct vetel *keres(int);G

yako

rlat

Presenter
Presentation Notes
A malloc függvény használata: E függvény segítségével a dinamikus memóriából (heap) a paraméterében megadott méretű részt foglalhatunk le! Visszatérési értéke, az erre a memóriaterületre mutató void típusú mutató lesz, amelyre megfelelő típusátalakítást kell alkalmaznunk! Később a free() használatával ezt a területet felszabadíthatjuk. A függvény képes hibaellenőrzést is végezni, amelyet most nem használtunk ki. _Ha elfogy a heap, akkor a visszatérési értéke NULL.�Követendő megoldás a következő:�uj=(struct vetel *)malloc(sizeof(stuct vetel));�if(!uj)�{�printf(„Elfogyott a memória.”);�exit(1);�} Strázsaelemek: nem tartalmaznak adatot, egyetlen szerepük az, hogy a határt jelképezzék (ne futhassunk le a listáról)!
Page 79: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

79

TTáárgyszerkezetekrgyszerkezetekvoid beszur(struct vetel *v);void beszur(struct vetel *v);

/* el/* előődeklardeklaráácicióó

*/*/

void listaz();void listaz();void torol(int kod);void torol(int kod);int main()int main(){{kezdo=(struct vetel *)malloc(sizeof(struct vetel));kezdo=(struct vetel *)malloc(sizeof(struct vetel));veg=(struct vetel *)malloc(sizeof(struct vetel));veg=(struct vetel *)malloc(sizeof(struct vetel));kezdokezdo-->kovetkezo=veg;>kovetkezo=veg;vegveg-->elozo=kezdo;>elozo=kezdo;

/* str/* stráázszsáák inicializk inicializáálláása */sa */

uj=(struct vetel *)malloc(sizeof(struct vetel));uj=(struct vetel *)malloc(sizeof(struct vetel));ujuj-->arukod=2;>arukod=2;

ujuj-->eladottdb=1;>eladottdb=1;

Gya

korla

t

Presenter
Presentation Notes
Kulcs: egyértelmű azonosító (struktúra attribútuma) Rendezési kulcs: e szerint növekvő (vagy csökkenő) sorrend definiálható. Main: főprogram a C-ben.
Page 80: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

80

TTáárgyszerkezetekrgyszerkezetek

beszur(uj);beszur(uj);uj=(struct vetel *)malloc(sizeof(struct vetel));uj=(struct vetel *)malloc(sizeof(struct vetel));ujuj-->arukod=1;>arukod=1;

ujuj-->eladottdb=1;>eladottdb=1;

beszur(uj);beszur(uj);listaz();listaz();printf(printf(„„\\nTnTöörlrléés uts utáánn\\nn””););torol(1);torol(1);

listaz();listaz();

return 0;return 0;}}

/* main v/* main véége */ge */

Gya

korla

t

Page 81: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

81

TTáárgyszerkezetekrgyszerkezetekVerem Verem ––

LIFO adatszerkezetLIFO adatszerkezet

2 m2 műűvelet velet éértelmezett rajta: az adott rtelmezett rajta: az adott elem utelem utááni bevitel ni bevitel éés a kivs a kivéétel, vagyis tel, vagyis a PUSH a PUSH éés a POP a fejns a POP a fejnééll

Hogyan hajthatHogyan hajthatóók vk véégre ezen az gre ezen az adatszerkezeten a tanult madatszerkezeten a tanult műűveletek?veletek?

1.1.

LLéétrehoztrehozáás: az s: az üüres verem elkres verem elkéészszííttéése.se.2.2.

BBőővvííttéés: csak a megls: csak a megléévvőő

elemek utelemek utáán n

ttöörtrtéénhet, vagyis a verem tetejnhet, vagyis a verem tetejéén.n.3.3.

TTöörlrléés: csak a legutolss: csak a legutolsóó

elemet lehet elemet lehet

fizikailag tfizikailag töörröölni, mely az 1. sorszlni, mely az 1. sorszáámmúú..Elmélet

Page 82: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

82

TTáárgyszerkezetekrgyszerkezetek4.4.

Csere: nincs.Csere: nincs.

5.5.

RendezRendezéés: nincs.s: nincs.6.6.

KeresKereséés: nincs.s: nincs.

7.7.

ElEléérréés: nincs.s: nincs.8.8.

FeldolgozFeldolgozáás: csak a legutolss: csak a legutolsóó

elemre elemre

vonatkozhat, mely a verem feje.vonatkozhat, mely a verem feje.

SzSzéétsztszóórt mrt móódon don áábrbráázolhatzolhatóó, egyir, egyiráánynyúú listlistáával. Lval. Léétezik egy tezik egy úún. n.

vektorreprezentvektorreprezentáácicióója is, mely a ja is, mely a veremmutatveremmutatóóra ra ééppüül.l.

Elmélet

Page 83: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

83

TTáárgyszerkezetekrgyszerkezetekJellemzJellemzőőjjüük, hogy specik, hogy speciáális fogalmakat lis fogalmakat

éértelmezhetrtelmezhetüünk rnk ráájuk: juk: ÜÜres res éés Tele.s Tele. A szA széélslsőőssééges elemek implementges elemek implementáácicióója ja

nehnehééz. Elsz. Elsőősorban arra valsorban arra valóó, hogy a , hogy a segsegíítstsééggéével megfordvel megfordííthatunk egy a thatunk egy a keletkezkeletkezééskor meglskor megléévvőő

elemsorrendet!elemsorrendet!

Semmilyen program, ill. operSemmilyen program, ill. operáácicióós s rendszer nem lrendszer nem léétezik verem ntezik verem néélklküül. A l. A futfutóó

programok, ill. folyamatok kprogramok, ill. folyamatok köözzöötti tti

vvááltltáást mindig a veremmemst mindig a veremmemóória (stack ria (stack memory) segmemory) segíítstsééggéével valvel valóóssíítjuk meg.tjuk meg.Elmélet

Page 84: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

84

TTáárgyszerkezetekrgyszerkezetekSor Sor ––

FIFO adatszerkezetFIFO adatszerkezet

4 m4 műűvelet velet éértelmezett rajta: a fej rtelmezett rajta: a fej eleléérréése (Access Head), a fej elhagyse (Access Head), a fej elhagyáása sa (POP), besz(POP), beszúúrráás a vs a vééggéére (Inject), re (Inject), éés a s a vvéég elg eléérréése (Access End).se (Access End).

Sor esetSor esetéén e mn e műűveleteknek speciveleteknek speciáális lis nevnevüük van: PUT (olvask van: PUT (olvasáás els elöölrlrőől, majd l, majd pedig tpedig töörlrléés), GET (s), GET (íírráás a vs a vééggéén).n).

Hogyan hajthatHogyan hajthatóók vk véégre ezen az gre ezen az adatszerkezeten a tanult madatszerkezeten a tanult műűveletek?veletek?

1.1.

LLéétrehoztrehozáás: s: üüres sor lres sor léétrehoztrehozáása.sa.Elmélet

Page 85: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

85

TTáárgyszerkezetekrgyszerkezetek2.2.

BBőővvííttéés: csak a sor vs: csak a sor vééggéén lehetsn lehetsééges.ges.

3.3.

TTöörlrléés: csak a sor elejs: csak a sor elejéén lehetsn lehetsééges ges éés s csak fizikailag.csak fizikailag.

4.4.

Csere: nincs.Csere: nincs.5.5.

RendezRendezéés: nincs.s: nincs.

6.6.

KeresKereséés: nincs.s: nincs.7.7.

ElEléérréés: nincs.s: nincs.

8.8.

FeldolgozFeldolgozáás: csak a legelss: csak a legelsőő

elemre elemre vonatkozhat, mely a sor feje.vonatkozhat, mely a sor feje.

ÁÁbrbráázolzoláása tsa töörtrtéénhet folyamatosan nhet folyamatosan éés s szszéétsztszóórtan is.rtan is.Elmélet

Page 86: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

86

TTáárgyszerkezetekrgyszerkezetek

SzSzéétsztszóórt rt áábrbráázolzoláásnsnáál: kl: kéét fejjel ellt fejjel elláátott tott egy iregy iráányban lnyban lááncolt listncolt listáát hasznt hasznáálunk.lunk.

Folytonos Folytonos áábrbráázolzoláásnsnáál: l: ááltalltaláában vektor ban vektor reprezentreprezentáácicióót alkalmazunk.t alkalmazunk.

SpeciSpeciáális sorok: lis sorok:

Fix kezdetFix kezdetűű

sor: az elejsor: az elejéén van az 1n van az 1--es es

indexindexűű, s 1 mutat, s 1 mutatóója van, a vja van, a véége.ge.

VVáándorlndorlóó

sor: 2 mutatsor: 2 mutatóója van, az eleje ja van, az eleje

éés a vs a véége.ge.Elmélet

Page 87: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

87

TTáárgyszerkezetekrgyszerkezetekSpeciSpeciáális sorok: lis sorok:

Ciklikus sor: jellemzCiklikus sor: jellemzőője, hogy nincs je, hogy nincs benne elemmozgatbenne elemmozgatáás, csak s, csak íírráás s éés s olvasolvasáás.s.

KettKettőős, vagy 2 vs, vagy 2 vééggűű

sor: benne mind a sor: benne mind a 6 speci6 speciáális mlis műűvelet realizvelet realizáálhatlhatóó. . Vagyis mindkVagyis mindkéét vt vééggéérrőől lehet l lehet íírni rni éés s olvasni is (GET, PUT, RGET, RPUT), olvasni is (GET, PUT, RGET, RPUT), 2 2 öösszefordsszefordíított veremhez tott veremhez hasonlhasonlííthatthatóó. (. (ÁÁltalltaláában ilyen a ban ilyen a memmemóóriakezelriakezeléés.)s.)Elmélet

Page 88: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

88

TTáárgyszerkezetekrgyszerkezetek

SpeciSpeciáális sorok: lis sorok:

PrioritPrioritáásos sor: e sorban az sos sor: e sorban az adatelemeknek van egy speciadatelemeknek van egy speciáális lis jellemzjellemzőője, a prioritje, a prioritáás, mely s, mely meghatmeghatáározza az rozza az íírráási si éés a feldolgozs a feldolgozáási si sorrendet.sorrendet.

A sorokat, mint adatszerkezeteket A sorokat, mint adatszerkezeteket mindenfajta pufferelmindenfajta puffereléésnsnéél hasznl hasznááljuk!ljuk!

Elmélet

Page 89: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

89

TTáárgyszerkezetekrgyszerkezetek

Sztring Sztring ––

olyan speciolyan speciáális lista, melynek lis lista, melynek specialitspecialitáása az, hogy az elemei az sa az, hogy az elemei az „„abcabc””

szimbszimbóólumai. (Olyan lumai. (Olyan

sztringekkel foglalkozunk, melyek sztringekkel foglalkozunk, melyek elemei karakterek.)elemei karakterek.)

Hogyan hajthatHogyan hajthatóók vk véégre ezen az gre ezen az adatszerkezeten a tanult madatszerkezeten a tanult műűveletek?veletek?

1.1.

LLéétrehoztrehozáás: felts: feltööltltééssel tssel töörtrtéénik.nik.2.2.

BBőővvííttéés: csak rs: csak réészsztringekre vonatkozik szsztringekre vonatkozik ez a mez a műűvelet.velet.

Elmélet

Page 90: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

90

TTáárgyszerkezetekrgyszerkezetek3.3.

TTöörlrléés: bs: báármelyik rrmelyik réészsztringet szsztringet ttöörröölhetjlhetjüük, de csak fizikailag.k, de csak fizikailag.

4.4.

Csere: szintCsere: szintéén csak rn csak réészsztringre szsztringre vonatkozik.vonatkozik.

5.5.

RendezRendezéés: nincs.s: nincs.6.6.

ElEléérréés: a sztring bs: a sztring báármelyik karaktere rmelyik karaktere eleléérhetrhetőő..

7.7.

KeresKereséés: csak rs: csak réészsztringre szsztringre éértelmezzrtelmezzüük.k.8.8.

FeldolgozFeldolgozáás: alapja a rs: alapja a réészsztringre szsztringre vonatkozvonatkozóó

kereskereséés.s.

Elmélet

Page 91: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

91

TTáárgyszerkezetekrgyszerkezetekÁÁbrbráázolzoláása tsa töörtrtéénhet folytonosan nhet folytonosan éés s

szszéétsztszóórtan is, de az utrtan is, de az utóóbbit ritkbbit ritkáán n hasznhasznááljuk.ljuk.

A folytonos A folytonos áábrbráázolzoláást hasznst hasznáálva a lva a kköövetkezvetkezőő

reprezentreprezentáácicióók k

lehetslehetséégesek:gesek:1.1.

Minden karakternek azonos mMinden karakternek azonos mééretretűű

ttáárhelyet foglalunk le. rhelyet foglalunk le. (pl.: 1 karakter = 1 byte)(pl.: 1 karakter = 1 byte)

2.2.

Minden sztringnek annyit foglalunk le, Minden sztringnek annyit foglalunk le, amennyi a karakterszamennyi a karakterszáámbmbóól adl adóódik.dik.

Elmélet

Page 92: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

92

TTáárgyszerkezetekrgyszerkezetek2.2.

Ilyenkor a lefoglalt tIlyenkor a lefoglalt táárhely elejrhely elejéén (1, n (1, vagy 2 bvagy 2 báájton) jelezzjton) jelezzüük a sztring hosszk a sztring hosszáát. t. Vagy esetleg a sztirng vVagy esetleg a sztirng vééggéén helyezn helyezüünk nk el egy plusz bel egy plusz báájtot, mely a sztring vjtot, mely a sztring vééggéét t jelzi. Vagy lefoglalunk annyi bjelzi. Vagy lefoglalunk annyi báájtot, jtot, amennyi a karaktereknek szamennyi a karaktereknek szüüksksééges, s ges, s egy kegy küüllöön tn tááblbláázatban tzatban táároljuk azt az roljuk azt az informinformáácicióót, hogy hol kezdt, hogy hol kezdőődik a sztring. dik a sztring. (A Pascal a 2., a C a 3. vari(A Pascal a 2., a C a 3. variáácicióót t hasznhasznáálja.)lja.)

A sztring adatszerkezet alapproblA sztring adatszerkezet alapprobléémmáája a ja a KeresKereséés ks kéérdrdéése.se.Elmélet

Page 93: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

93

TTáárgyszerkezetekrgyszerkezetekA keresA kereséés, mint a legts, mint a legtööbb bb

adatmanipuladatmanipuláácicióós ms műűvelet a sztringek velet a sztringek esetesetéében rben réészsztringekre vonatkozik.szsztringekre vonatkozik.

Ezt a problEzt a probléémmáát az t az úún. Mintaillesztn. Mintaillesztééssel ssel oldhatjuk meg. Loldhatjuk meg. Léényege, hogy adva nyege, hogy adva van egy alapsztring, melyet jelvan egy alapsztring, melyet jelööljljüünk nk aa--val, val, éés egy mintasztring, melyet s egy mintasztring, melyet jeljelööljljüünk nk bb--vel. Meg kell hatvel. Meg kell hatáároznunk roznunk azt, hogy a mintasztring elazt, hogy a mintasztring előőfordulfordul--e, s e, s ha igen, akkor hha igen, akkor háányszor az nyszor az alapsztringben.alapsztringben.Elmélet

Page 94: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

94

TTáárgyszerkezetekrgyszerkezetekMilyen algoritmusok kMilyen algoritmusok kéépesek e mpesek e műűveletet veletet

hathatéékonnykonnyáá

tenni?tenni?TTööbb megoldbb megoldáás is ls is léétezik:tezik:

1.1.

MezitlMezitláábas algoritmus bas algoritmus ––

lléényege a nyege a mintasztringgel tmintasztringgel töörtrtéénnőő

elemenkelemenkéénti nti

öösszehasonlsszehasonlííttáás, a ks, a kéépfeldolgozpfeldolgozáásban sban alkalmazzalkalmazzáák.k.

2.2.

KMP algoritmus KMP algoritmus ––

mely kihasznmely kihasznáálja a lja a mintasztringnek az mintasztringnek az öönmagnmagáára valra valóó

illesztillesztéésséét.t.3.3.

DDöömmöölkilki--ffééle algoritmus le algoritmus ––

nincs benne nincs benne

semmilyen visszalsemmilyen visszalééppéés (bitms (bitmáátrix).trix).Elmélet

Page 95: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

95

TTáárgyszerkezetekrgyszerkezetekI.I.

HomogHomogéén adatszerkezetekn adatszerkezetek

4.4.

Hierarchikus Hierarchikus ––

minden elemminden eleméének egy nek egy megelmegelőőzzőője je éés aks akáárhrháány rny ráákköövetkezvetkezőője je lehet. A legfontosabb konkrlehet. A legfontosabb konkréét ilyen t ilyen adatszerkezet a adatszerkezet a FaFa, ez matematikailag , ez matematikailag egy speciegy speciáális grlis grááf.f.

FaFa

adatszerkezet: van egy kitadatszerkezet: van egy kitüüntetett ntetett eleme, ez a eleme, ez a gygyöökkéérelemrelem, melynek , melynek nincs megelnincs megelőőzzőője. Akje. Akáárhrháány olyan ny olyan eleme lehet, melynek nincs eleme lehet, melynek nincs rráákköövetkezvetkezőője, ezek a je, ezek a levlevéélelemeklelemek..Elmélet

Page 96: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

96

TTáárgyszerkezetekrgyszerkezetekA fA fáában a gyban a gyöökkéértrtőől a levl a levéélig egy adott lig egy adott

sorozaton keresztsorozaton keresztüül juthatunk el. Ezt a l juthatunk el. Ezt a bejbejáárráást st úútnaktnak

nevezznevezzüük. Dinamikus k. Dinamikus

adatszerkezet. A fa szintjeinek adatszerkezet. A fa szintjeinek magassmagassáággáátt, a fa magass, a fa magassáággáának nak nevezznevezzüük. A fa bk. A fa báármely eleme lehet egy rmely eleme lehet egy rréészfa gyszfa gyöökkééreleme. A freleme. A fáákkal vkkal véégezhetgezhetőő

mműűveletek veletek ááltalltaláában rban réészfszfáákra kra vonatkoznak. Rendezettnek nevezzvonatkoznak. Rendezettnek nevezzüük a k a ffáát, ha a rt, ha a ráákköövetkezvetkezőőinek a sorrendje inek a sorrendje meghatmeghatáározott.rozott.Elmélet

Page 97: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

97

TTáárgyszerkezetekrgyszerkezetek

Azt a fAzt a fáát, ahol minden elemnek 2 db t, ahol minden elemnek 2 db rráákköövetkezvetkezőője lehet, binje lehet, binááris fris fáának nak nevezznevezzüük. Rendezett bink. Rendezett binááris fris fááknknáál l beszbeszéélhetlhetüünk balnk bal--, ill. jobb oldali , ill. jobb oldali rráákköövetkezvetkezőőrrőől. Ennek az l. Ennek az adatszerkezetnek alapvetadatszerkezetnek alapvetőő

szerepe van szerepe van

az informatikaz informatikáában. Bban. Báármilyen nem rmilyen nem binbinááris fa reprezentris fa reprezentáálhatlhatóó

egy megfelelegy megfelelőő

mmóódon eldon előőáállllíított bintott binááris fris fáával. val. A lekA lekéépezpezéés a ks a köövetkezvetkezőő::

Elmélet

Page 98: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

98

TTáárgyszerkezetekrgyszerkezetek

Elmélet

a

bc

hg

d

f

e

a

h

g

f

d

ce

b

A leképezés algoritmusa:

Az egy szinten lévő

elemek az eredeti fában, a jobboldali rákövetkezők lesznek az új bináris fában.

Page 99: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

99

TTáárgyszerkezetekrgyszerkezetekHogyan hajthatHogyan hajthatóók vk véégre ezen az gre ezen az

adatszerkezeten a tanult madatszerkezeten a tanult műűveletek?veletek?1.1.

LLéétrehoztrehozáás: ls: léétrehozzuk a gytrehozzuk a gyöökkéérelemet, relemet, majd pedig bmajd pedig bőővvííttüünk. nk.

2.2.

BBőővvííttéés: s: ááltalltaláában a levban a levéélelemeknlelemeknéél l ttöörtrtéénik, valamekkora mnik, valamekkora mééretretűű

rréészfszfáával.val.

3.3.

TTöörlrléés: s: ááltalltaláában rban réészfszfáát tt töörlrlüünk nk fizikailag, logikai tfizikailag, logikai töörlrléés nincs.s nincs.

4.4.

Csere: bCsere: báármely elem krmely elem köönnyen felnnyen felüüllíírhatrhatóó..5.5.

RendezRendezéés, Keress, Kereséés s éés Els Eléérréés: helyett...s: helyett...

8.8.

FeldolgozFeldolgozáás: alapja a s: alapja a ……bejbejáárráás.s.Elmélet

Page 100: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

100

TTáárgyszerkezetekrgyszerkezetekBinBinááris fris fáák bejk bejáárráása 3 fsa 3 fééle mle móódon don

ttöörtrtéénhet: Preorder, Inorder nhet: Preorder, Inorder éés s Posztorder mPosztorder móódon.don.

1.1.

Preorder bejPreorder bejáárráás: Ha s: Ha üüres a fa, akkor vres a fa, akkor véége. Ha ge. Ha nem nem üüres, akkor megfogjuk a gyres, akkor megfogjuk a gyöökkéérelemet, majd relemet, majd preorder mpreorder móódon (a legbaloldalibb megfogdon (a legbaloldalibb megfogáássáával) val) bejbejáárjuk a baloldali rrjuk a baloldali réészfszfáát, majd preorder mt, majd preorder móódon don bejbejáárjuk a jobboldali rrjuk a jobboldali réészfszfáát. Ezen a mt. Ezen a móódon don kapjuk egy matematikai kifejezkapjuk egy matematikai kifejezéés prefix alakjs prefix alakjáát!t!

2.2.

Inorder bejInorder bejáárráás: Ha s: Ha üüresres…… Inorder mInorder móódon don bejbejáárjuk a baloldalt, megfogjuk a gyrjuk a baloldalt, megfogjuk a gyöökkéérelemet, relemet, majd inorder mmajd inorder móódon a jobboldali rdon a jobboldali réészfszfáát. t. ÍÍgy gy áállllíítjuk eltjuk előő

a matematikai kifejeza matematikai kifejezéés infix alakjs infix alakjáát.t.G

yako

rlat

Page 101: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

101

TTáárgyszerkezetekrgyszerkezetek+

/

b -

d

*

ca

Prefix kifejezés:

+/ab*c-de

Infix kifejezés:

a/b+c*d-e

Posztfix kifejezés:

ab/cde-*+

Gya

korla

t

e

3.

Posztorder bejárás: Ha üres…

Posztorder módon bejárjuk a baloldali részfát, majd a jobboldalit, végül megfogjuk a gyökérelemet. Ekkor keletkezik a posztfix alak, melyet szokás fordított lengyel formának is nevezni!

Page 102: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

102

TTáárgyszerkezetekrgyszerkezetek

A prefix A prefix éés a posztfix alakja egy s a posztfix alakja egy kifejezkifejezéésnek ksnek köölcslcsöönnöösen sen egyegyéértelmrtelműűen megfeleltetheten megfeleltethetőő

egy egy

binbinááris fris fáának, de az infix alakja nem. nak, de az infix alakja nem. Ekkor annyi darab kEkkor annyi darab küüllöönbnböözzőő

ffáánk nk

lehet, ahlehet, aháány operny operáátora van a tora van a kifejezkifejezéésnek. Ezt az ellentmondsnek. Ezt az ellentmondáást a st a zzáárróójelezjelezééssel oldhatjuk fel! ssel oldhatjuk fel! Vagyis: Vagyis: ((a/b)+(c*(d((a/b)+(c*(d--e)))e)))

SpeciSpeciáális flis fáák:k:

Gya

korla

t

Page 103: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

103

TTáárgyszerkezetekrgyszerkezetek1.1. MinimMinimáális magasslis magassáággúú

fafa

––

olyan fa, olyan fa,

mely egy adott elemszmely egy adott elemszáám mellett a m mellett a lehetlehetőő

legkevesebb szintet tartalmazza.legkevesebb szintet tartalmazza.

2.2. TTöökkééletesen kiegyensletesen kiegyensúúlyozott falyozott fa

–– benne minden elemre igaz, hogy az benne minden elemre igaz, hogy az

adott elem baladott elem bal--

éés jobboldali rs jobboldali réészfszfáájjáában ban az elemek szaz elemek szááma legfeljebb eggyel tma legfeljebb eggyel téér r el egymel egymááststóól.l.

3.3. KeresKeresőő

fafa

––

az adatelemei olyanok, az adatelemei olyanok, hogy van kulcsuk, s hogy van kulcsuk, s íígy gy éértelmezhetrtelmezhetőő

rajtuk a keresrajtuk a kereséés ms műűvelete.velete.Elmélet

Page 104: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

104

TTáárgyszerkezetekrgyszerkezetek4.4. FelfFelfűűzzöött fatt fa

––

a preorder a preorder éés az inorder s az inorder

bejbejáárráást segst segííttőő

fa.fa.5.5. BB--fafa

––

a ta tööbbbbáággúú

fa egy specifa egy speciáális lis

vvááltozata, a keresltozata, a keresőő

fa fa ááltalltaláánosnosííttáása. sa. TTöökkééletesen kiegyensletesen kiegyensúúlyozott lapokblyozott lapokbóól l ááll! Egy lapon tll! Egy lapon tööbb elem helyezhetbb elem helyezhetőő

el, el,

a leva levééllapok mind egy szinten vannak. llapok mind egy szinten vannak. Minden ilyen fMinden ilyen fáának rendje (n) van. nak rendje (n) van. Minden lapon maximum 2n db elem Minden lapon maximum 2n db elem helyezhethelyezhetőő

el. A gyel. A gyöökkéérlapon legalrlapon legaláább bb

1 db, a t1 db, a tööbbi lapon legalbbi lapon legaláább n db elem.bb n db elem.Elmélet

Page 105: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

105

Keresés a 2-rendű B-fában A lapokra szintenként lefelé

haladva maximum 2n

db elem kerülhet!

25

2,5,7,8 22,24 41,44,45,4613,14,15,18 26,27,28 32,35,38

10 21 30 40

Ha a B-fát szintenként összenyomjuk, akkor egy növekvő kulcssorrendű

sorozatot kapunk. A B-fának az

állománykezelésben van szerepe, ahol ennek az adatszerkezetnek egy változatát használják.

Vizsgáljuk meg erre az adatszerkezetre a tanult műveleteket!Elmélet

Page 106: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

106

TTáárgyszerkezetekrgyszerkezetek1.1.

LLéétrehoztrehozáás: ls: léétrehozzuk a gytrehozzuk a gyöökkéérelemet, majd relemet, majd pedig bpedig bőővvííttüünk. nk.

2.2.

BBőővvííttéés: els: előőszszöör megkeressr megkeressüük a bk a bőővvííttőő

elem elem helyhelyéét a ft a fáában, mely csak levban, mely csak levééllapon lehet. Pl. llapon lehet. Pl. az elaz előőzzőő

fa esetfa esetéén legyen ez most 23! Ekkor, n legyen ez most 23! Ekkor,

ha az adott lapon 2nha az adott lapon 2n--nnéél kevesebb elem van, l kevesebb elem van, akkor a rendezettsakkor a rendezettsééget megtartva elhelyezzget megtartva elhelyezzüük. k. Ha pont 2n elem van a lapon, akkor lapfelezHa pont 2n elem van a lapon, akkor lapfelezéés s kköövetkezik be. Ilyenkor az vetkezik be. Ilyenkor az úúj elem elhelyezj elem elhelyezéése se ututáán kivn kiváálasztjuk az elemek klasztjuk az elemek köözzüül a kl a köözzéépspsőőt, t, melyet az egy szinttel felette lmelyet az egy szinttel felette léévvőő

lapra lapra

helyezhelyezüünk, s az eredeti lapon maradt 2n db nk, s az eredeti lapon maradt 2n db elemet kettelemet kettéé

osztjuk (megfelezzosztjuk (megfelezzüük).k).Elmélet

Page 107: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

107

TTáárgyszerkezetekrgyszerkezetek2.2.

BBőővvííttéés: a lapfelezs: a lapfelezéés sors soráán 1 db n 1 db úúj levj levééllap llap keletkezik. Elkeletkezik. Előőfordulhat az is, hogy a fordulhat az is, hogy a lapfelezlapfelezéés vs véégiggygiggyűűrrűűzik a fzik a fáán, s ekkor nn, s ekkor nőő

a fa a fa

magassmagassáága.ga.3.3.

TTöörlrléés: mindig fizikai s: mindig fizikai éés bs báármelyik elem rmelyik elem ttöörröölhetlhetőő. Hasonl. Hasonlóó

mmóódszerrel tdszerrel töörtrtéénik, mint a nik, mint a

bbőővvííttéés. Ha a levs. Ha a levééllapon van a tllapon van a töörlendrlendőő

elem, elem, akkor a megkeresakkor a megkereséése utse utáán tn töörröölhetlhetőő. Ha nem . Ha nem levlevééllapon van, akkor felllapon van, akkor felüüllíírjuk rjuk őőt egy ott t egy ott maradmaradóó

elemmel, majd pedig telemmel, majd pedig töörrööljljüük. Ha a k. Ha a

ttöörlendrlendőő

elemet tartalmazelemet tartalmazóó

lapon csak n db lapon csak n db elem talelem taláálhatlhatóó, akkor egy azonos szinten , akkor egy azonos szinten taltaláálhatlhatóó

((úún. testvn. testvéérlaprrlapróól) hozunk l) hozunk áát elemet. t elemet. Elmélet

Page 108: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

108

TTáárgyszerkezetekrgyszerkezetek3.3.

TTöörlrléés: ha nincs lehets: ha nincs lehetőősséég a testvg a testvéérlaprrlapróól elem l elem ááthozatalthozataláára, akkor lapra, akkor lapöösszevonsszevonáást kell st kell elvelvéégezngeznüünk. A lapnk. A lapöösszevonsszevonáás vs véégigggiggöörrööghet a ghet a ffáán, s ilyenkor csn, s ilyenkor csöökken a fa magasskken a fa magassáága.ga.

4.4.

Csere: nem Csere: nem éértelmezett.rtelmezett.5.5.

RendezRendezéés: a lapok a kulcs szerint rendezettek.s: a lapok a kulcs szerint rendezettek.

6.6.

KeresKereséés: kulcs szerinti lines: kulcs szerinti lineááris a lapokon belris a lapokon belüül.l.7.7.

ElEléérréés: bejs: bejáárráással tssal töörtrtéénik.nik.

8.8.

FeldolgozFeldolgozáás: A Bs: A B--ffáát mindig a memt mindig a memóóririáában ban ééppíítjtjüük fel, s ilyenkor az alapja az ismertetett k fel, s ilyenkor az alapja az ismertetett kereskereséés lesz.s lesz.

Elmélet

Page 109: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

109

TTáárgyszerkezetekrgyszerkezetekFFáák k áábrbráázolzoláásasa: lehets: lehetsééges folytonosan ges folytonosan éés s

szszéétsztszóórtan is. Ha folytonosan trtan is. Ha folytonosan töörtrtéénik, nik, akkor 1 dimenziakkor 1 dimenzióós ts töömbmbööt alkalmazunk t alkalmazunk rráá, haszn, hasznáálata a statikusslata a statikussáág miatt nem g miatt nem ccéélszerlszerűű. . ÁÁltalltaláában a szban a széétsztszóórt rt áábrbráázolzoláást hasznst hasznááljuk, kljuk, kéétirtiráánynyúú

lista lista

felhasznfelhasznáálláássáával. A bejval. A bejáárráás ms műűvelet velet elvelvéégzgzéése sorse soráán a fn a fáát sorra kt sorra kéépezzpezzüük le. k le. E mE műűvelet velet éértelmezhetrtelmezhetőő

ttööbbbbáággúú

ffáákra kra

is, amikor preorder mis, amikor preorder móódon bejdon bejáárjuk a rjuk a legbaloldalibb rlegbaloldalibb réészfszfáát, majd a tt, majd a tööbbit is!bbit is!Elmélet

Page 110: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

110

TTáárgyszerkezetekrgyszerkezetekMiMiéért van szrt van szüükskséég a dinamikus g a dinamikus

adatszerkezetek hasznadatszerkezetek hasznáálatlatáára?ra?NNéézzzzüünk egy pnk egy pééldldáát!t!

T.f., hogy T.f., hogy ááruhruháázi eladzi eladáások sok

adatait kell tadatait kell táárolnunk. Az eladrolnunk. Az eladáásokat egy sokat egy vetelvetel nevnevűű

struktstruktúúra reprezentra reprezentáálja, egylja, egy--egy egy intint ttíípuspusúú

mezmezőővel az vel az áárukrukóódnak, ill. az eladott dnak, ill. az eladott darabszdarabszáámnak a jelmnak a jelöölléésséére, tovre, továábbbbáá

lléétezik egy tezik egy

char c[1000]char c[1000] ttöömb, valamifmb, valamifééle le termterméékinformkinformáácicióó

ttáárolroláássáára. Ha azt tudjuk, ra. Ha azt tudjuk,

hogy 1000hogy 1000--nnéél tl tööbb adat biztosan nem jbb adat biztosan nem jöön, n, akkor: akkor: struct vetel v[1000]struct vetel v[1000] lesz a struktlesz a struktúúrráánk! nk! Ha azonban csak nHa azonban csak nééhháány vny váássáárlrláási adatunk si adatunk van, akkor van, akkor óóririáási pazarlsi pazarláást vst véégeztgeztüünk!nk!G

yako

rlat

Page 111: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

111

TTáárgyszerkezetekrgyszerkezetekE problE problééma megoldma megoldáássáára alkalmazhatunk pl. ra alkalmazhatunk pl.

kkéétirtiráányban lnyban lááncolt listncolt listáát, vagy t, vagy binbinááris ris kereskeresőőffáátt. A lista elej. A lista elejéén n éés vs vééggéén n úúgynevezett strgynevezett stráázsaelemmel. Az zsaelemmel. Az elelőőzzőőekben leekben leíírt feladatot egyszerrt feladatot egyszerűűssíítjtjüük k éés s a a vetelvetel struktstruktúúrráában csak az ban csak az arukodarukod éés az s az eladottdbeladottdb mezmezőőket szerepeltetjket szerepeltetjüük!k!

A tA táárolandrolandóó

elemeket a binelemeket a binááris fris fáában is mutatban is mutatóók k kköötik tik öössze, mint a listssze, mint a listáában. Minden ban. Minden csomcsomóóponthoz legfeljebb 2 mponthoz legfeljebb 2 máásik sik csomcsomóópont tartozik, ezek lesznek a pont tartozik, ezek lesznek a csomcsomóópont gyermekei. A gyermekekre a pont gyermekei. A gyermekekre a balbal éés a s a jobbjobb mutatmutatóók fognak mutatni!k fognak mutatni!G

yako

rlat

Page 112: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

112

Bináris keresőfa11

51

191

51

NULL

34

NULL NULL

1351

NULL NULL

212

NULL NULL

Gya

korla

t

Page 113: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

113

Bináris keresőfa programjaStruktúra létrehozása:

#include <stdio.h> #include <stdlib.h>

struct vetel {

int arukod;

/* ez a kulcs mező

*/

int eladottdb; struct vetel *bal;

struct vetel *jobb; };

struct vetel *gyoker, *aktualis;Definiáljuk a tároló

struktúrát (vetel), és

létrehozunk 2 mutatót, melyek közül az 1. a gyökérelemre mutat, a másik az aktuálisra.G

yako

rlat

Page 114: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

114

Bináris keresőfa programjaBeszúrás művelete:

struct vetel* beepit(struct vetel *hova, struct vetel *elem) {

if(hova==NULL)

{ hova=elem;

hova->bal=hova->jobb=NULL; return hova;

}

else if(hova->arukod==elem->arukod) hova->eladottdb+=elem->eladottdb;

else if(hova->arukod>elem->arukod) hova->bal=beepit(hova->bal,elem);

else hova->jobb=beepit(hova->jobb,elem); return hova;

}

Gya

korla

t

Page 115: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

115

Bináris keresőfa programjaHogyan történik a beszúrás művelete?

A vetel függvény paraméterül várja annak a fának a gyökérmutatóját, ahová

a beszúrás

történik, illetve a beszúrandó

elemet. Ha a hova gyökérmutató

NULL értékű, akkor a fa

üres, s ezért egyszerűen az új elemre kell állítani a gyökérmutatót. Ha a gyökérelem már létezik, akkor 3 eset lehetséges: 1. a beszúrandó

elem arukod nevű

kulcsa

megegyezik a gyökérelemével, s ekkor növelnünk kell az eladottdb változó

értékét!

Gya

korla

t

Page 116: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

116

Bináris keresőfa programjaHogyan történik a beszúrás művelete?

Ha a gyökérelem már létezik, akkor 3 eset lehetséges: 2. a beszúrandó

elem arukod nevű

kulcsa

kisebb a gyökérelemnél, akkor a bal oldali részfába szúrjuk be az elemet!

3. a beszúrandó

elem arukod nevű

kulcsa nagyobb a gyökérelemnél, akkor a jobb oldali részfába szúrjuk be az elemet!

Ez utóbbi két művelet a beepit függvény rekurzív meghívását igényli. Fontos még, hogy a visszatérési érték struct vetel* típusú!G

yako

rlat

Page 117: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

117

Bináris keresőfa programjaNövekvő

sorrend szerinti listázás:

void listaz(struct vetel *mit) {

if(mit==NULL) return;

else {

listaz(mit->bal);

printf(˝Árukód: %d, eladott menny.: %d\n˝,mit->arukod,

mit->eladottdb); }

}

Gya

korla

t

Page 118: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

118

Bináris keresőfa programjaNövekvő

sorrend szerinti listázás:

rekurzív módon történik. Ha a paraméterül kapott részfa gyökerének mutatója mit=NULL,

akkor nincs mit kiírni, a fa üres.

Egyébként kiírjuk a baloldali részfában lévő elemeket egy rekurzív listaz hívással, majd a

gyökérelemet egy printf függvénnyel, s végül a jobboldali részfában lévő

elemeket egy

újabb rekurzív listaz hívással. A keresőfa- tulajdonságnak megfelelően növekvő

sorrendben fogja kiírni az elemeket. A rekurziókat pedig a NULL mutató

elérése

fogja befejeztetni.Gya

korla

t

Page 119: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

119

Bináris keresőfa programjaKeresés megvalósítása:

struct vetel* keres(struct vetel *hol,int kod) {

if(hol==NULL) return NULL;

else if(hol->arukod==kod) return hol;

else if(hol->arukod>kod) return keres(hol->bal,kod);

else return keres(hol->jobb,kod); }

Gya

korla

t

Page 120: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

120

Bináris keresőfa programjaKeresés megvalósítása:

szintén rekurzióval történik. A művelet hasonlóan történik a listázáshoz! A keres függvény NULL értéket ad vissza, ha a keresett elem (kod) nincs a fában, egyébként pedig az elem kod nevű

mutatóját

szolgáltatja eredményül.A törlés műveletének megvalósításával azért

nem foglalkozunk, mert az lényegesen bonyolultabb a bemutatottaknál!

Végül lássunk egy példát a bináris keresőfa alkalmazására!

Gya

korla

t

Page 121: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

121

Bináris keresőfa programjaFőprogram megvalósítása:

int main() {

int i,elemkod[10]={11,2,5,4,0,2,1,15,12,8};

gyoker=NULL; for(i=0;i<10;i++)

{ aktualis=((struct vetel *)

malloc(sizeof(struct vetel)); aktualis->arukod=elemkod[i];

aktualis->eladottdb=i;

Gya

korla

t

Page 122: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

122

Bináris keresőfa programjaFőprogram megvalósítása:

print(˝Elemkód %d\n˝, aktualis->arukod);

gyoker=beepit(gyoker,aktualis); }

listaz(gyoker); aktualis=keres(gyoker,12);

printf(˝Keresett elemkód %d\n˝, aktualis->arukod);

printf(˝Megtalált elemszám %d\n˝, aktualis->eladottdb);

return 0; }

Gya

korla

t

Page 123: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

123

TTáárgyszerkezetekrgyszerkezetekI.I.

HomogHomogéén adatszerkezetekn adatszerkezetek

5.5.

HHáállóós adatszerkezeteks adatszerkezetek

–– HHÁÁLLÓÓ, mely tekinthet, mely tekinthetőő

a hierarchikus a hierarchikus adatszerkezetek adatszerkezetek ááltalltaláánosnosííttáássáának.nak.

BBáármely eleme lehet az rmely eleme lehet az őőt megelt megelőőzzőője, je, éés a rs a ráákköövetkezvetkezőője is, akje is, akáár mr méég g öönmagnmagáéáé

is. Nincs kitis. Nincs kitüüntetett elemntetett elemüük k éés s dinamikusak!dinamikusak!

Matematikailag egy irMatematikailag egy iráánynyíított, tott, öösszefsszefüüggggőő

grgrááfnak tekintjfnak tekintjüük. A k. A

szerkezetet magszerkezetet magáával az val az áábrbráázolzoláással ssal definidefiniááljuk, mely tljuk, mely töörtrtéénhet az elnhet az előőbb bb emlemlíített irtett iráánynyíított grtott grááffal, vagy ffal, vagy úún. n. Elmélet

Page 124: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

124

TTáárgyszerkezetekrgyszerkezetekHHáállóós adatszerkezeteks adatszerkezetek

––

a szerkezet megada szerkezet megadáása.sa.1.1.

IrIráánynyíított grtott grááf segf segíítstsééggéével:vel:

Elmélet

a

db

c e

f

1.

5.4.

2. 3.

6.

Page 125: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

125

TTáárgyszerkezetekrgyszerkezetek2.2.

SzomszSzomszéédossdossáági mgi máátrix segtrix segíítstsééggéével:vel:

Elmélet

a

db

c e

f

1.

5.4.

2. 3.

6.

11 22 33 44 55 6611 0 1 0 1 0 022 0 0 0 1 1 033 0 0 0 0 1 144 0 1 0 0 0 055 0 0 0 1 0 066 0 0 0 0 0 1Ha van n db elem ( 6 db), akkor

egy n*n-es bitmátrixot hozunk létre, amelyet soronként töltünk fel. Nullát írunk oda (ahhoz az elemhez), ahol az oszlop nem rákövetkezője az adott sornak.

E mátrix mellett felépítünk egy vektort is, amely a háló elemeinek az értékeit tartalmazza.

Page 126: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

126

TTáárgyszerkezetekrgyszerkezetekHogyan hajthatHogyan hajthatóók vk véégre ezen az gre ezen az

adatszerkezeten a tanult madatszerkezeten a tanult műűveletek?veletek?1.1.

LLéétrehoztrehozáás: a szomszs: a szomszéédossdossáági mgi máátrix trix éés a s a hozzhozzáá

tartoztartozóó

éértrtéékvektor lkvektor léétrehoztrehozáássáát t

jelenti.jelenti.2.2.

BBőővvííttéés: ilyenkor bs: ilyenkor bőővvüül egy l egy úúj sorral, j sorral, éés s egy egy úúj oszloppal a mj oszloppal a máátrix (s a vektor is).trix (s a vektor is).

3.3.

TTöörlrléés: csak fizikai ts: csak fizikai töörlrléés lehetss lehetsééges.ges.4.4.

Csere: a mCsere: a máátrixot nem trixot nem éérinti csak az rinti csak az éértrtéékvektort.kvektort.

5.5.

RendezRendezéés: nincs.s: nincs.Elmélet

Page 127: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

127

TTáárgyszerkezetekrgyszerkezetek6.6.

ElEléérréés: bejs: bejáárráás van helyette.s van helyette.

7.7.

KeresKereséés: bejs: bejáárráás ms műűvelete van helyette.velete van helyette.8.8.

FeldolgozFeldolgozáás: alapja a bejs: alapja a bejáárráás, mely sors, mely soráán n ffáákra kkra kéépezzpezzüük le a hk le a háállóó

adatszerkezetet. adatszerkezetet.

E fE fáák k úúgy gy áállnak elllnak előő, hogy az egym, hogy az egymáásra sra rráákköövetkezvetkezőő

elemeket tartalmazzelemeket tartalmazzáák k

elemkelemkéént. E fnt. E fáák elk előőáállllííttáássáára ra (reprezent(reprezentáácicióójjáára) 2 fajta mra) 2 fajta móódszer dszer lléétezik: a mtezik: a méélyslyséégi gi éés a szs a széélesslesséégi (vagy gi (vagy mennyismennyiséégi) bejgi) bejáárráás.s.

Elmélet

Page 128: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

128

TTáárgyszerkezetekrgyszerkezetekA hA háállóó

adatszerkezet jelentadatszerkezet jelentőősséége az MI ge az MI

(mesters(mestersééges intelligencia) problges intelligencia) probléémmáák k megoldmegoldáássáában van. ban van.

ÁÁbrbráázolzoláása sa ááltalltaláában szban széétsztszóórtan trtan töörtrtéénik: nik: ilyenkor a grilyenkor a grááfnak egy multilistfnak egy multilistáát t feleltetfeleltetüünk meg, vagyis mutatnk meg, vagyis mutatóóttöömbmbööket ket veszveszüünk fel az adatelemek mellnk fel az adatelemek melléé. E . E ttöömbmbööknek annyi eleme van, ahknek annyi eleme van, aháány eleme ny eleme van a hvan a háállóónak. A tnak. A töömbmböök elemei mindig a k elemei mindig a rráákköövetkezvetkezőő

elemre mutatnak.elemre mutatnak.

A hA háállóó

adatszerkezet alapfogalmai: az adatszerkezet alapfogalmai: az úút, t, kköörrúút t éés a legrs a legröövidebb videbb úút hossza.t hossza.Elmélet

Page 129: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

129

TTáárgyszerkezetekrgyszerkezetekEzen alapfogalmakhoz kEzen alapfogalmakhoz kööttőődnek a MI dnek a MI

feladatok alapkfeladatok alapkéérdrdéései:sei:––

LLééteziktezik--e olyan e olyan úút, melyben az t, melyben az öösszes elem sszes elem benne van?benne van?

––

Egyes csomEgyes csomóópontokbpontokbóól melyi k ml melyi k máásikba sikba vezet vezet úút?t?

––

VanVan--e ke köörrúút benne?t benne?––

Melyik a maximMelyik a maximáális klis köörrúút?t?

––

VanVan--e olyan ke olyan köörrúút, amely az t, amely az öösszes elemet sszes elemet tartalmazza?tartalmazza?

––

Hogyan lehet olyan algoritmust talHogyan lehet olyan algoritmust taláálni, lni, mely a grmely a grááf elemeit csak egyszer f elemeit csak egyszer éérinti?rinti?

Elmélet

Page 130: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

130

Logikai adatszerkezetekLogikai adatszerkezetekI.I.

HeterogHeterogéén adatszerkezetekn adatszerkezetek

Rekord adatszerkezetRekord adatszerkezet

–– REKORDREKORD

olyan adatszerkezet, melynek olyan adatszerkezet, melynek

elemei mezelemei mezőőkbkbőől l áállnak. A mezllnak. A mezőőknek knek sajsajáát, egyedi nevt, egyedi nevüük van, s az egyes k van, s az egyes mezmezőők tk tíípusa (attribpusa (attribúútuma) ktuma) küüllöönbnböözhet zhet egymegymááststóól. A mezl. A mezőők szk szááma ma éés sorrendje s sorrendje kkööttöött a rekordban. Egy rekord egy tt a rekordban. Egy rekord egy „„egyedegyed””

kküüllöönbnböözzőő

tulajdonstulajdonsáágainak gainak

egyegyüüttese. Az adatszerkezet tttese. Az adatszerkezet táárolroláása sa ttöörtrtéénhet folytonosan nhet folytonosan éés szs széétsztszóórtan is. rtan is. A rekord statikus adatszerkezet!A rekord statikus adatszerkezet!Elmélet

Page 131: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

131

Logikai adatszerkezetekLogikai adatszerkezetekHogyan hajthatHogyan hajthatóók vk véégre ezen az gre ezen az

adatszerkezeten a tanult madatszerkezeten a tanult műűveletek?veletek?1.1.

LLéétrehoztrehozáás: rs: röögzgzíítjtjüük a mezk a mezőő

nevnevéét, t,

ttíípuspusáát, s esetleg a mezt, s esetleg a mezőők sorrendjk sorrendjéét (s a t (s a hosszhosszáát) is.t) is.

2.2.

BBőővvííttéés: nincs.s: nincs.3.3.

TTöörlrléés: nincs.s: nincs.

4.4.

Csere: lCsere: léétezik.tezik.5.5.

RendezRendezéés: nincs.s: nincs.

6.6.

KeresKereséés: nincs.s: nincs.Elmélet

Page 132: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

132

Logikai adatszerkezetekLogikai adatszerkezetek7.7.

ElEléérréés: ks: köözvetlen.zvetlen.

8.8.

FeldolgozFeldolgozáás: a mezs: a mezőők alapjk alapjáán tn töörtrtéénik.nik.A rekord adatszerkezet A rekord adatszerkezet áábrbráázolzoláása az egyes sa az egyes

reprezentreprezentáácicióókban (programnyelveken) kban (programnyelveken) ááltalltaláában folytonosan tban folytonosan töörtrtéénik. nik.

Az adatszerkezet tAz adatszerkezet táárgyszerkezeti rgyszerkezeti megvalmegvalóóssííttáása az: sa az: áállomllomáányrekord! nyrekord!

KonkrKonkréét megvalt megvalóóssííttáásukkal a programozsukkal a programozáás s tanttantáárgy keretrgy keretéén beln belüül foglalkozunk l foglalkozunk (amennyiben lesz r(amennyiben lesz ráá

elegendelegendőő

ididőőnk)!nk)!

Elmélet

Page 133: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

133

Logikai adatszerkezetekLogikai adatszerkezetekEgyes programnyelvek (pl. a Pascal) Egyes programnyelvek (pl. a Pascal) megengedik a dinamikus rekordok megengedik a dinamikus rekordok hasznhasznáálatlatáát oly mt oly móódon, hogy alkotdon, hogy alkotóóelemeik elemeik (mez(mezőőik), vagy atomi, vagy tetszik), vagy atomi, vagy tetszőőleges leges (tanult) adatszerkezetek lehetnek. S ha az (tanult) adatszerkezetek lehetnek. S ha az alkalmazott adatszerkezetek dinamikusak alkalmazott adatszerkezetek dinamikusak voltak, akkor a belvoltak, akkor a belőőllüük felk felééppüüllőő

rekordok is rekordok is

dinamikusak lesznek!dinamikusak lesznek!TehTeháát az t az áállomllomáányoknyok

(f(fáájlok) a rekord logikai jlok) a rekord logikai

adatszerkezet fizikai adatszerkezeti adatszerkezet fizikai adatszerkezeti megfelelmegfelelőői!i!

Elmélet

Page 134: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

134

TTáárgyszerkezetekrgyszerkezetekFizikai Fizikai áállomllomáányok fogalmi rendszere:nyok fogalmi rendszere:––

MezMezőő

––

BlokkBlokk––

Fizikai Fizikai áállomllomáányny

Elmélet

Page 135: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

135

TTáárgyszerkezetekrgyszerkezetekFix hosszFix hosszúússáággúú

rekordformrekordformáátum jellemztum jellemzőői:i:

Elmélet

Page 136: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

136

TTáárgyszerkezetekrgyszerkezetekVVááltozltozóó

hosszhosszúússáággúú

rekordformrekordformáátum tum

jellemzjellemzőői:i:

Elmélet

Page 137: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

137

TTáárgyszerkezetekrgyszerkezetekHatHatáározatlan hosszrozatlan hosszúússáággúú

rekordformrekordformáátum tum

jellemzjellemzőői:i:

Elmélet

Page 138: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

138

TTáárgyszerkezetekrgyszerkezetekÁÁllomllomáányszerkezetek:nyszerkezetek:

Elmélet

Page 139: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

139

TTáárgyszerkezetekrgyszerkezetekSzeriSzeriáális lis áállomllomáányszerkezet:nyszerkezet:

Elmélet

Page 140: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

140

TTáárgyszerkezetekrgyszerkezetekSzekvenciSzekvenciáális lis áállomllomáányszerkezet:nyszerkezet:

Elmélet

Page 141: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

141

TTáárgyszerkezetekrgyszerkezetekDirekt Direkt áállomllomáányszerkezet:nyszerkezet:

Elmélet

Page 142: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

142

TTáárgyszerkezetekrgyszerkezetekRandom Random áállomllomáányszerkezet:nyszerkezet:

Elmélet

Page 143: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

143

TTáárgyszerkezetekrgyszerkezetekÖÖsszetett sszetett áállomllomáányszerkezetek:nyszerkezetek:ÁÁllomllomáányszerveznyszervezéési techniksi technikáákk1.1.

LLááncolncolááss

2.2.

IndexelIndexelééss

Elmélet

Page 144: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

144

TTáárgyszerkezetekrgyszerkezetekÖÖsszetett sszetett áállomllomáányszerkezetek:nyszerkezetek:11--leges kulcsra leges kulcsra ééppüüllőő

öösszetett sszetett

áállomllomáányszerkezeteknyszerkezetek

Elmélet

Page 145: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

145

TTáárgyszerkezetekrgyszerkezetekÖÖsszetett sszetett áállomllomáányszerkezetek:nyszerkezetek:22--lagos kulcsra lagos kulcsra ééppüüllőő

öösszetett sszetett

áállomllomáányszerkezeteknyszerkezetek

Elmélet

Page 146: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

146

ÖÖsszefoglalsszefoglalááss

Adatszerkezetek csoportosAdatszerkezetek csoportosííttáása I.:sa I.:

1.1.

Statikus:Statikus: IdIdőőben az adatelemek szben az adatelemek szááma nem ma nem

vvááltozik.ltozik.

2.2.

Dinamikus:Dinamikus: IdIdőőben az adatelemek szben az adatelemek szááma nem ma nem

áállandllandóó..

Elmélet

Page 147: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

147

ÖÖsszefoglalsszefoglalááss

Adatszerkezetek csoportosAdatszerkezetek csoportosííttáása II.:sa II.:

1.1.

HomogHomogéén:n: ÖÖsszes adatelemsszes adateleméének a tnek a tíípusa azonos.pusa azonos.

2.2.

HeterogHeterogéén:n: Az adatelemek tAz adatelemek tíípusa eltpusa eltéérhet rhet

egymegymááststóól.l.

Elmélet

Page 148: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

148

ÖÖsszefoglalsszefoglalááss1.1.HomogHomogéén:n:

1.1.StruktStruktúúra nra néélklküüli adatszerkezetek li adatszerkezetek (logikai) (logikai) ––

fizikai megvalfizikai megvalóóssííttáásuk: suk:

halmaz, multihalmaz.halmaz, multihalmaz.2.2.AsszociatAsszociatíív adatszerkezetek (logikai)v adatszerkezetek (logikai)

––

fizikai megvalfizikai megvalóóssííttáásuk: tsuk: töömb, tmb, tááblbláázat.zat.3.3.SzekvenciSzekvenciáális adatszerkezetek (logikai)lis adatszerkezetek (logikai)

––

fizikai megvalfizikai megvalóóssííttáásuk: lista, verem, sor, suk: lista, verem, sor, sztring.sztring.

4.4.Hierarchikus adatszerkezetek (logikai)Hierarchikus adatszerkezetek (logikai)

–– fizikai megvalfizikai megvalóóssííttáásuk: fa.suk: fa.

5.5.HHáállóós adatsz. (logikai)s adatsz. (logikai)

––

hháállóó

(fizikai).(fizikai).Elmélet

Page 149: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

149

ÖÖsszefoglalsszefoglalááss2.2.

HeterogHeterogéén:n:Rekord adatszerkezet (logikai)Rekord adatszerkezet (logikai)

––

fizikai fizikai

megvalmegvalóóssííttáása az sa az áállomllomáányrekord, vagy nyrekord, vagy ffáájl.jl.

/Nagyon fontos, hogy a 2 rekord fogalom /Nagyon fontos, hogy a 2 rekord fogalom elteltéér egymr egymááststóól. Az elsl. Az elsőőt mindig a t mindig a RAMRAM--ban hozzuk lban hozzuk léétre, a mtre, a máásodikat sodikat pedig a hpedig a hááttttéértrtáárolrolóón!/n!/

Az Az öösszes tanult logikai adatszerkezet sszes tanult logikai adatszerkezet egymegymáásba sba áágyazhatgyazhatóó

oly moly móódon, hogy don, hogy

éérvrvéényesnyesüülnie kell az lnie kell az ortogonalitortogonalitáás s elvelvéének! (Ott, nek! (Ott, éés s úúgy kezelgy kezeléés elves elve……))Elmélet

Page 150: Készítette: Csatlós István 2005-ben · Elmélet. 3. Alapfogalmak 2. Nyílt: A valós világ rendszerei nem önmagukban létezők, közöttük ... a programozás tantárgy. Szokás

150

TTáárgyszerkezetekrgyszerkezetekVideVideóó!!

Gya

korla

t