Adatszerkezetek Készítette: Csatlós István 2005-ben
Adatszerkezetek
Készítette:Csatlós István
2005-ben
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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őő::
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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óó!!
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
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
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
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
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
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
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
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
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
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
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
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
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
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.
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!
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.
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.
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.
73
TTáárgyszerkezetekrgyszerkezetekVideVideóó!!
Gya
korla
t
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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.
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
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
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!
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
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
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
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
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
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
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
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
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
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
112
Bináris keresőfa11
51
191
51
NULL
34
NULL NULL
1351
NULL NULL
212
NULL NULL
Gya
korla
t
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
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
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
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
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
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
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
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
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
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
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
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.
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.
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
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
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
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
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
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
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
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
134
TTáárgyszerkezetekrgyszerkezetekFizikai Fizikai áállomllomáányok fogalmi rendszere:nyok fogalmi rendszere:––
MezMezőő
––
BlokkBlokk––
Fizikai Fizikai áállomllomáányny
Elmélet
135
TTáárgyszerkezetekrgyszerkezetekFix hosszFix hosszúússáággúú
rekordformrekordformáátum jellemztum jellemzőői:i:
Elmélet
136
TTáárgyszerkezetekrgyszerkezetekVVááltozltozóó
hosszhosszúússáággúú
rekordformrekordformáátum tum
jellemzjellemzőői:i:
Elmélet
137
TTáárgyszerkezetekrgyszerkezetekHatHatáározatlan hosszrozatlan hosszúússáággúú
rekordformrekordformáátum tum
jellemzjellemzőői:i:
Elmélet
138
TTáárgyszerkezetekrgyszerkezetekÁÁllomllomáányszerkezetek:nyszerkezetek:
Elmélet
139
TTáárgyszerkezetekrgyszerkezetekSzeriSzeriáális lis áállomllomáányszerkezet:nyszerkezet:
Elmélet
140
TTáárgyszerkezetekrgyszerkezetekSzekvenciSzekvenciáális lis áállomllomáányszerkezet:nyszerkezet:
Elmélet
141
TTáárgyszerkezetekrgyszerkezetekDirekt Direkt áállomllomáányszerkezet:nyszerkezet:
Elmélet
142
TTáárgyszerkezetekrgyszerkezetekRandom Random áállomllomáányszerkezet:nyszerkezet:
Elmélet
143
TTáárgyszerkezetekrgyszerkezetekÖÖsszetett sszetett áállomllomáányszerkezetek:nyszerkezetek:ÁÁllomllomáányszerveznyszervezéési techniksi technikáákk1.1.
LLááncolncolááss
2.2.
IndexelIndexelééss
Elmélet
144
TTáárgyszerkezetekrgyszerkezetekÖÖsszetett sszetett áállomllomáányszerkezetek:nyszerkezetek:11--leges kulcsra leges kulcsra ééppüüllőő
öösszetett sszetett
áállomllomáányszerkezeteknyszerkezetek
Elmélet
145
TTáárgyszerkezetekrgyszerkezetekÖÖsszetett sszetett áállomllomáányszerkezetek:nyszerkezetek:22--lagos kulcsra lagos kulcsra ééppüüllőő
öösszetett sszetett
áállomllomáányszerkezeteknyszerkezetek
Elmélet
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
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
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
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
150
TTáárgyszerkezetekrgyszerkezetekVideVideóó!!
Gya
korla
t