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

Méret: px
Mutatás kezdődik a ... oldaltól:

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

Átírás

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

2 Alapfogalmak Elmélet Rendszer Közös s ismérv alapján összetartozó,, egymással meghatározott kapcsolatban lévől elemek jól j körülhatárolt együttese. A valós s világ g rendszerei komplexek, nyíltak, és s dinamikusak. 1. Komplex: Egy elemnek sok tulajdonsága lehet, valamint a közöttk ttük lévő kapcsolatok igen bonyolultak lehetnek. 2

3 Alapfogalmak 2. Nyílt: A valós s világ g rendszerei nem önmagukban létezl tezők, közöttk ttük különféle kapcsolatok állnak fenn. 3. Dinamikus: A fennáll lló kapcsolatok és a viselkedési si módok m az időben folyamatosan változnak, v s a rendszer egyes elemei máskm sképpen viselkednek egymással szemben is. Elmélet 3

4 Alapfogalmak A valós s világ g leegyszerűsítése se modellalkotással törtt rténik. Absztrakció Olyan tevékenys kenység, amikor az egyes, konkrét t (vizsgált) rendszernél l kiemelünk néhány n ny közös k tulajdonságot, s a többi t (számunkra lényegtelen) tulajdonsággal nem foglalkozunk. Elmélet 4

5 Alapfogalmak Modell Beszélhet lhetünk adatmodellről és s funkcionális modellről. l. 1. Adatmodell: A teljes modell statikus része. Fix adatokkal dolgozik. Benne a rendszer elemeinek tulajdonságait adatokkal jellemezzük. Ezzel foglalkozik az adatszerkezetek tantárgy! Szokás s logikai, vagy absztrakt adatszerkezetnek is nevezni. Elmélet 5

6 Alapfogalmak 2. Funkcionális modell: Minden esetben a viselkedést st modellezi. Dinamikus a jellemzők k időbeli változv ltozása miatt. Ezzel foglalkozik az algoritmizálás és a programozás s tantárgy. Szokás fizikai, vagy tárgyszerkezetnek t is nevezni. E szerkezetek jelennek meg a memóri riában, illetve a hátth ttértárolókon. Elmélet 6

7 Adatszerkezetek csoportosítása sa 1. Lehet statikus, vagy dinamikus. Statikus adatszerkezet esetén n az adatelemek száma az időben nem változik, dinamikusnál l viszont igen. Elmélet 2. Tovább bbá lehet homogén n (egynemű), vagy heterogén n (összetett,( eltérő típusú). Ezeket tovább csoportosíthatjuk thatjuk logikai (absztrakt) és fizikai (tárgy) adatszerkezetekre. 7

8 Adatszerkezetek csoportosítása sa Elmélet Homogén n logikai adatszerkezetek típusai és s megvalósításuk suk tárgyszerkezetekkel: 1. Struktúra ra nélkn lküli li adatszerkezetek halmaz, ill. multihalmaz. 2. Asszociatív v adatszerkezetek tömb, ill. táblázat. 3. Szekvenciális adatszerkezetek lista, verem, sor, sztring. 4. Hierarchikus adatszerkezetek fa. 5. Hálós s adatszerkezetek háló. 8

9 Adatszerkezetek csoportosítása sa Elmélet Heterogén n logikai adatszerkezet és megvalósítása sa tárgyszerkezettel: t 1. Rekord a RAM-ban (ez a logikai). 2. Rekord a fájlban f (ez a tárgyszerkezet) t A két k t rekordfogalom nagymért rtékben eltér egymást stól! Ábrázolása mindig folytonosan törtt rténik, míg m g a homogén adatszerkezetek ábrázolhatók k szétsz tszórt módon is. 9

10 Műveletvégzés s a logikai adatszerkezetekkel Elmélet 1. Létrehozás E művelet m során n dől d l el az adatszerkezet felépítése és s a legfontosabb jellemzői. E művelet m elvégz gzése után n vihetünk fel adatelemeket. 2. Bővítés E művelet m során n az adatelemek száma nő, n új j adatelemek kerülnek be a szerkezetbe. (Csak dinamikus adatszerkezet bővíthetb thető!) 10

11 Műveletek log. adatszerkezetekkel Elmélet 3. Törlés Beszélhet lhetünk logikai és fizikai törlt rlésről. Logikai: az adatelemek száma nem változik, csak valamilyen technikával egy, vagy több t adatelemet érvénytelenítünk. nk. Fizikai: az adatelemek darabszáma csökken, ténylegesen t eltávol volítjuk őket. 4. Csere Az adatelemek száma nem, csak az értékük k változik. v (A log. törlt rlés ált. lt.-ban egy értékcsere!) 11

12 Műveletek log. adatszerkezetekkel Elmélet 5. Rendezés Rendezési algoritmusok ismerete szüks kséges az alkalmazásához. 6. Keresés Annak a kérdk rdésnek az eldönt ntése a feladat, hogy egy jól j definiált elem benne van-e e az adatszerkezetben, vagy nincs. Fajtái: teljes-,, lineáris ris-,, bináris keresés. s. 7. Elérés Olyan művelet, m amely bármely elem megfogását, elérését jelenti. Fajtái: soros, közvetlen. k spec. 12

13 Műveletek log. adatszerkezetekkel Elmélet 8. Feldolgozás az adatszerkezet minden elemén n valamilyen művelet m elvégz gzése történik. Speciális művelete m az újrafeldolgozás, amikor egy új tárolóterületen ismét t létrehozzuk l az adatszerkezetet. Ez törtt rténhet változtatás s nélkn lkül, l, vagy változtatv ltoztatással is. Általában az utóbbi valósul meg, hiszen a műveletnek m pont ez a célja. c (E művelet m csak fiz. szerk.-nél l létezik!) l 13

14 Adatszerkezetek ábrázolása Mindig a tárgyszerkezeten t alapszik. Azt értjük k alatta, hogy hogyan jelenítj tjük meg az egyes adatelemeket a memóri riában. Lehetséges ábrázolási módok m a következők: k: 1. Folytonos ábrázolás 2. Szétsz tszórt ábrázolás Elmélet 14

15 Elmélet Adatszerkezetek ábrázolása Folytonos ábrázolás s jellemzői: Minden adatelem számára azonos hosszúságú tárhelyet foglalunk le a memóri riában. Egy tárhely t annyi bájtbb jtból áll, hogy az adott adatszerkezet minden adateleme megjeleníthet thető legyen. Az egyes tárhelyek t folytonosan összefüggő tárterületet alkotnak. Így, ha ismerjük k az 1. tárhelyet, t s a tárhelyek t azonos, közös k s méretm retét, t, akkor ebből l bármelyik b tárhely címe c meghatározhat rozható! 15

16 Elmélet Adatszerkezetek ábrázolása Folytonos ábrázolás s jellemzői: Az adatelemek elhelyezése egy-egy tárhelyen minden konkrét adatszerkezet esetében egy leképez pezéssel törtt rténik, amely megmondja, hogy az adatelemeket hová kell elhelyezni (s esetleg azt is, hogy hogyan) az adatszerkezet tárhelyén. Hogyan hajthatók k végre v ezen a tárolt rolási módon a megismert műveletek? m 16

17 Adatszerkezetek folytonos ábrázolása 1. Létrehozás Tárhely lefoglalását jelenti. 2. Bővítés E művelet m egyszerűen en végrehajtható akkor, ha a feltölt ltés (vagyis a leképez pezés) olyan, hogy folytonosan tölti t fel a rendelkezésre álló tárhelyet. A művelet m adatelemek mozgatásával is együtt járhat. j Elmélet 17

18 Adatszerkezetek folytonos ábrázolása 3. Törlés Logikai változata v megvalósíthat tható adatcserével akkor, ha egy olyan adott bitkombináci cióra állítjuk be a tárhelyet, t amelynek nincs gyakorlati jelentősége. Fizikai változatának alkalmazása során n az utolsó adatelemmel felülírjuk a rákövetkezőt. t. Elmélet 4. Csere Az adott tárhelyet t ilyenkor egyszerűen en felülírjuk az új j adattal. 18

19 Adatszerkezetek folytonos ábrázolása 5. Rendezés a folytonos ábrázolás esetén n bármelyik b ismert rendezési algoritmus alkalmazható. 6. Keresés Mindhárom tanult keresési si eljárás s alkalmazható. 7. Elérés Minden tárhelyet t közvetlen k módon el tudunk érni. Elmélet 8. Feldolgozás Az összes ismert keresési si eljáráson és s a közvetlen k elérésen alapul. 19

20 Adatszerkezetek folytonos ábrázolása Előnyei: Gyors feldolgozás. Statikus adatszerkezetek esetén n jól j alkalmazható. Hátrányai: Elmélet Lassú utasítás s végrehajtv grehajtás. Ilyenkor a tárhelyet t előre le kell foglalni, s emiatt nincs lehetőség g a dinamikus memóriakezel riakezelésre. 20

21 Adatszerkezetek szétsz tszórt ábrázolása Szétsz tszórt ábrázolás s jellemzői: Az egyes tárhelyek t mérete m különbözhet egymást stól. A tárhely t egy részr szén n adatelemek (adatrész), másik m részr szén n egy, vagy több t mutató találhat lható,, amely tárct rcímet tartalmaz. Lehetővé teszi a dinamikus tárkezelt rkezelést. Elmélet A tárhelyek t nem folytonosan, hanem szétsz tszórtan helyezkednek el. 21

22 Elmélet Adatszerkezetek szétsz tszórt ábrázolása Szétsz tszórt ábrázolás s típusai: t 1. Egyirányban láncolt l lista Cirkuláris ris lista Kétirányban láncolt l lista Multilista 4. Adatszerkezetek reprezentáci ciója: : az adatszerkezet tárolt rolási módjm djának és s a leképez pezésének az együttes megadása. Adatszerkezetek implementáci ciója: amikor egy adott programozási nyelven leprogramozzuk az adatszerkezetet. 22

23 Egyirányban láncolt l lista Adat Mut. Adat Mut. Adat NIL Fej Fej az 1. tárhely t címét c t tartalmazza. Mutató mindig a következk vetkező tárhely címére mutat. NIL olyan mutató,, amely azt jelzi, hogy nincs további tárhely. t Elmélet Hogyan hajthatóak ak végre v ebben az ábrázolási módban m a műveletek? m 23

24 Cirkuláris ris és s kétirk tirányban láncolt l lista Fej Adat Mut. Adat Mut. Adat Mut. Adat N. M2 Adat M1 M2 Adat M1 N. Fej Fej Elmélet Hogyan hajthatóak ak végre v ezekben az ábrázolási módokban m a tanult műveletek? 24

25 Multilista Elmélet Különlegessége az, hogy az adatrésze összetett adatelemeket tartalmaz. Megvalósítása sa 3 módon m törtt rténhet: 1. Két t egymást stól l független f lista láncoll ncolása. 2. Egy adott adatért rtékre törtt rténik meg a láncolás. Annyi részlr szlánc épül l fel, ahány különböző értéke van az adatelemnek. Fejből l annyi van, ahány részlr szlánc. 3. Az adatelem 1. része r jelző funkciót t tölt t be, azt mutatja meg, hogy az adat valóban adat-e, vagy egy új j lánc l kezdete, tehát t fej. 25

26 Szabad helyek problémája Elmélet 1.Folytonos Folytonos tárolt rolás s esetén Csak fizikai törlt rlést engedünk nk meg, s összegyűjtjük k a szabad tárhelyeket. t Vagy csak logikai törlt rlést engedünk nk meg, s csak bizonyos időközönk nként nt hajtunk végre v szabad tárhely t gyűjt jtögetést. Megvalósítása sa 2 módon m törtt rténhet: 1. Szemétgy tgyűjtési technikával (Garbage Collection), mely a hátth ttérben, és s bizonyos időközönk nként nt aktivizálódva törtt rténik. 2. Szabad helyek nyilvántart ntartása technika. 26

27 Szabad helyek problémája Elmélet 2.Sz Szétszórt tárolt rolás s esetén A tárhelyeket t előre lefoglaljuk, és készítünk egy egyirány nyú listát t a szabad helyekről. l. Logikai törlt rlés s itt is lehetséges. Megvalósítása sa itt is 2 módon m törtt rténhet: 1. Szemétgy tgyűjtési technikával (Garbage Collection), mely a hátth ttérben, és s bizonyos időközönk nként nt aktivizálódva törtt rténik. 2. Szabad helyek nyilvántart ntartása technika alkalmazásával (szabad helyek listája). 27

28 Elmélet I. Homog Tárgyszerkezetek Homogén n adatszerkezetek 1. Struktúra ra nélkn lküli li adatszerkezetek Közös s jellemzőjük: nincs bennük k semmilyen kapcsolat az adatelemek között, k és s bármilyen b átrendezés s után n ugyanolyanok maradnak (dinamikusak). Típusai: 1. Halmaz, vagy Set: melyben, minden elem értéke különbk nböző. 2. Multihalmaz, vagy Multiset, ill. Bag: melynek, lehet azonos értékű-, és s ismétl tlődő 28

29 Elmélet Tárgyszerkezetek I. Homogén n adatszerkezetek 1. Struktúra ra nélkn lküli li adatszerkezetek Speciálisan értelmezett műveletei: m 1. Unió 2. Metszet 3. Különbség 4. Tovább bbá a Multihalmaz esetén n az ismétl tlődés s miatt az előfordul fordulási számot is figyelembe kell venni. Ennek az adatszerkezetnek ott van alapvető szerepe, ahol az adatelemek valamikor, valahogyan előállnak. llnak. 29

30 Elmélet I. Homog Tárgyszerkezetek Homogén n adatszerkezetek 2. Asszociatív v adatszerkezetek a TÖMB Ezek a halmaz adatszerkezetekből úgy keletkeznek, hogy létrehozunk l egy osztályoz lyozást. Az így nyert elemekből részhalmazokat hozunk létre. l E részhalmazok, vagy diszjunktak, vagy átfedőek, ek, és s lehetnek közöttk ttük k 1 eleműek ek is. Nem dinamikusak! Típusai: 1. Egydimenziós s tömbt 2. Többdimenziós s tömbt 30

31 Elmélet Tárgyszerkezetek Hogyan hajthatók k végre v ezen az adatszerkezeten a tanult műveletek? m 1. Létrehozás: a dimenziósz szám és s az indextartomány ny rögzr gzítésével létrehozzuk l a struktúrát. t. (A gyakorlatban ez azt jelenti, hogy egymásut sután n felvesszük k az elemeket!) 2. Bővítés: új j elem felvétel telével törtt rténik. 3. Törlés: a logikai változata v elemcserével könnyen megvalósíthat tható,, fizikai törlt rlés pedig nincs. 4. Csere: van, elemcserét t jelent. 31

32 Elmélet Tárgyszerkezetek 5. Rendezés: általában csak 1 dimenzióban van értelme, több t dimenzióban nem értelmezzük. 6. Keresés: s: hasonlóan an kezelendő,, mint a rendezés. 7. Elérés: közvetlen k módon m törtt rténik (cím!). 8. Feldolgozás: alapja a közvetlen k elérés, 1 dimenzióban esetleg a keresés. s. Az adatszerkezet ábrázolása folytonosan történik, melyet vektorszerűnek hívnak! h Több dimenzióban el kell dönteni, d hogy sor-,, vagy oszlopfolytonosan törtt rténjen! 32

33 Tárgyszerkezetek Elmélet A tömb t adatszerkezet a programozásban alapvető jelentőségű,, mert a segíts tségével minden más m s adatszerkezet ábrázolható! Ezért vizsgáljunk meg néhány n ny gyakorlati problémát, melyek a tömbt mbök k segíts tségével leprogramozhatók. A konkrét t magas szintű programozási nyelvek közül k l a feladatok megoldása során a C nyelvet használjuk, de nem térünk t ki a nyelv sajátoss tosságaira, hanem csak a megoldási algoritmusra koncentrálunk! 33

34 Tárgyszerkezetek 1. Gyakran találkozhatunk lkozhatunk azzal a problémával, hogy egy halmaz elemei közül ki kell választanunkv egyet, valamilyen tulajdonsága alapján! Pl.: egész számokat tartalmazó tömb elemei közül, k -melyről l nem tudjuk, hogy rendezett-e- ki kell választanunk v a legkisebbet és s a legnagyobbat. Gyakorlat A feladat megoldásának algoritmusa, illetve programkódja C ben a következk vetkező: 34

35 Tárgyszerkezetek Gyakorlat #define TOMBMERET 100 int tarolo[tombmeret]; int min, max; min=tarolo[0]; for(i=1;i<tombmeret;i++) if(min>tarolo[i]) min=tarolo[i]; max=tarolo[0]; for(i=1;i<tombmeret;i++) if(max<tarolo[i]) max=tarolo[i]; 35

36 Gyakorlat Tárgyszerkezetek 2. Következő feladatainkban azt szeretnénk nk eldönteni nteni,, hogy egy adott elem megtalálhat lható-e e a tömbben, t s ha igen, akkor ő hányadik elem? E feladatok megoldása a különfk nféle keresési si algoritmusokkal lehetséges. A keresések sek legegyszerűbb módszere m a lineáris keresés,, melynek lényeg, l hogy sorban vesszük k a tömbelemeket, t s közben k megvizsgáljuk őket, hogy megegyeznek-e a keresett elemmel. A keresés s leáll ll az első megtalált lt elemnél, l, vagy a tömb t 36

37 Tárgyszerkezetek Gyakorlat #define TOMBMERET 100 int tarolo[tombmeret]; int e; int linearis(int e) { for(int i=0;i<tombmeret,i++) if(e==tarolo[i]) return i; return 1; } 37

38 Tárgyszerkezetek Gyakorlat Egy másik m igen egyszerű keresési si eljárás s a bináris keresés,, melynek alapfeltétele, tele, hogy a vizsgált tömb t rendezett legyen. Lényege: a keresett értéket elősz ször r a tömb t középső elemével hasonlítjuk össze. Ha egyenlőek, ek, akkor vége v a keresésnek. snek. Ha a keresett elem kisebb, mint a középsk pső, akkor a tömb t alsó felében folytatjuk tovább a keresést, st, egyébk bként pedig a felső felében. Az eljárás s ezután n rekurzív v módon m folytatódik tovább a kiválasztott térft rfélben. 38

39 Tárgyszerkezetek Gyakorlat int binaris(int also, int felso, int e) { int kozepso; while(also<felso+1) { kozepso=(also+felso)/2; if(e==tarolo[kozepso]) return kozepso; if(e>tarolo[kozepso]) also=kozepso+1; else felso=kozepso-1; } return 1; } 39

40 Gyakorlat Tárgyszerkezetek 3. Rendezéses feladatok, melynek megoldása során n egy (vagy több) t tömb t elemeit szeretnénk nk növekvn vekvő (vagy csökken kkenő) ) sorrendbe állítani. Sokféle rendezési algoritmus létezik. l Az egyszerűbbt bbtől l haladunk a bonyolultabbak felé.. Egy-egy adott probléma során mindig a rendelkezésre álló erőforr források és s a konkrét t cél c l elérése határozz rozzák k meg, hogy melyik módszert m célszerc lszerű alkalmazni. Elsőként az egyszerű cserés rendezéssel fogunk megismerkedni. 40

41 Gyakorlat Tárgyszerkezetek Legyen az adatok száma n (TOMBMERET). A feladat az adatok növekvn vekvő sorrendbe rendezése. A rögzr gzített i-edik i elemet összehasonlítjuk a nála n nagyobb indexű elemekkel. Ha a vizsgált elem kisebb az i-edik elemnél, l, akkor az elemeket felcserélj ljük k egymással. E algoritmust 2 egymásba ágyazott száml mlálós s ciklussal valósítjuk meg. HátrH tránya, hogy csak rendezett halmaz elemein működik. m Hasonlóan, an, mint a következk vetkező,, a közvetlen beszúrásos sos rendezés. 41

42 Gyakorlat Tárgyszerkezetek void csere(tomb a, int n) { int atmeneti, i, j; for(i=0;i<n-1;i++) { for(j=i+1;j<n;j++) { if(a[i]>a[j]) { atmeneti=a[i]; a[i]=a[j]; a[j]=atmeneti; } } } } 42

43 Gyakorlat Tárgyszerkezetek A beszúrásos sos rendezés s alapgondolata a következő: : vegyük k a rendezendő tömbünk első elemét, s ezt tekintsük k egy 1 elemű tömbnek, ez önmagában biztos, hogy rendezett. Ehhez hozzávessz vesszük k a 2. elemet, majd rendezzük őket. Veszzük k a 3. elemet, s ezt is rendezzük. Az eljárást ezután n addig folytatjuk, míg m g az eredeti nagy tömbünk rendezett nem lesz. Amikor a már m r rendezett résztr sztömbhöz hozzávesz veszünk egy új j elemet, akkor itt lineáris, vagy bináris keresést st végzv gzünk. 43

44 Tárgyszerkezetek Gyakorlat A keresés s eredmények nyeként nt megkapjuk az új elem helyét t a tömbben. t Az elem elhelyezését t beszúrással ssal végezzv gezzük, melyet úgy végzv gzünk el, hogy a már m r rendezett tömbrészletben a beszúrand randó helytől jobbra (növekv vekvő rendezésn snél) eső tömbelemeket eggyel jobbra toljuk, s az így keletkező üres helyre bemásoljuk az új j elemet. Megvalósítására láthatunk l példp ldát t lineáris és s bináris kereséssel ssel is! 44

45 Gyakorlat Tárgyszerkezetek int beszurlinearis() { int atmeneti, i, j, h; for(j=1;j<tombmeret;j++) { i=0; while((i<j)&&(tarolo[i]<tarolo[j])) i++; h=j; atmeneti=tarolo[h]; while(i<h) { tarolo[h]=tarolo[h-1]; h--h --;; } tarolo[h]=atmeneti; }return 0; 45

46 Gyakorlat Tárgyszerkezetek int beszurbinaris() { int atmeneti, j, h, also, felso, kozepso; for(j=1;j<tombmeret;j++) { also=0; felso=j; kozepso=0; while(also<felso+1) { kozepso=(also+felso)/2; if(tarolo[j]>=tarolo[kozepso]) also=kozepso-1; else felso=kozepso-1; } h=j; atmeneti=tarolo[h]; while(also<h) { tarolo[h]=tarolo[h-1]; h--h --; } tarolo[h]=atmeneti; } return 0; } 46

47 Gyakorlat Tárgyszerkezetek A buborékrendez krendezés lényege: a tömb t elejéről a vége v felé haladva a szomszédos elemeket hasonlítjuk össze, s amennyiben a tömb t elejéhez közelebb k lévől elem a nagyobb, akkor a két k t elemet felcserélj ljük (szokás s elemcserés s rendezésnek is nevezni). Ha elérj rjük k a tömb t végét, v akkor a legnagyobb elem a tömb t végére v kerül (felszáll), ll), így a rendezendő tömb hossza eggyel megrövid vidül. Erre a tömbre t újra alkalmazzuk az eljárást. A rendezés addig tart, amíg g a tömbmt mbméret 1 nem lesz. 47

48 Gyakorlat Tárgyszerkezetek int buborek() { int atmeneti, j, i; for(j=tombmeret-2;j>=0;j 2;j>=0;j--) for(i=0;i<=j;i++) if(tarolo[i+1]<tarolo[i]) /*csere*/ { /*kell*/ atmeneti=tarolo[i]; tarolo[i]=tarolo[i+1]; tarolo[i+1]=atmeneti; } return 0; } 48

49 Gyakorlat Tárgyszerkezetek A megismert rendezési eljárásokon kívülk léteznek még m g további, jóval j bonyolultabb eljárások is, melyek gyakorlati megvalósítása sa nem feladatunk, mégis m megemlítem őket. Ilyenek: Shell- rendezés s (Donald Shell 1959), gyorsrendezés s (Quicksort: C. A. R. Hoare 1962), rendezés s fastruktúrával, ládarendezés, és s az összefésüléses ses rendezés. A Shell módszer m lényege l az, hogy egymást stól l távolabb t álló elemeket hasonlít össze, így azok hamarabb 49

50 Gyakorlat Tárgyszerkezetek A gyorsrendezés s a csere elvén n alapszik, elve a következk vetkező: : kiválasztjuk a tömb t középsk pső elemét t, majd balról l megkeressük k azt az első elemet, amely ennél l nem kisebb, jobbról l pedig azt az elemet, amely ennél nem nagyobb. Kicserélj ljük k a két k t elemet, és folytatjuk a cserélget lgetést addig, amíg g a bal oldalon a középsk pső elemnél l nem nagyobb, jobb oldalon pedig mind kisebb elemek állnak. Ezt követk vetően en rekurzív v hívással h rendezzük k a tömb t alsó és s felső felét, s így tovább. 50

51 Tárgyszerkezetek Gyakorlat A gyorsrendezést st a legtöbb magas szintű programozási nyelv beépített módon m tartalmazza, s így könnyen k felhasználhat lható.. A másik m három h eljárást speciális esetekben szokták k alkalmazni. Pl. a ládarendezl darendezést akkor használjuk, ha az elemek értékkészlete kicsi, az összefésülésest sest pedig akkor, ha rendelkezésre áll két k t rendezett tömbt mbünk, s belőlük k szeretnénk nk egy rendezett harmadikat készk szíteni. 51

52 Elmélet I. Homog Tárgyszerkezetek Homogén n adatszerkezetek 2. Asszociatív v adatszerkezetek a TÁBLÁZAT,, mely tekinthető az 1 dimenziós s tömb t általánosításának. nak. A táblt blázat elemei összetettek: van egy kulcs-,, ill. egy adatrész szük. A 2 rész r típusának nem kell megegyeznie. A kulcsért rtékeknek mindig egyedieknek kell lenniük. Az adatért rtékek viszont tetszőlegesek lehetnek. Alkalmazhatunk rájuk folytonos, ill. szétsz tszórt ábrázolást (láncolt listát) t) is. Dinamikusak! 52

53 Tárgyszerkezetek Elmélet Hogyan hajthatók k végre v ezen az adatszerkezeten a tanult műveletek? m 1. Létrehozás: a táblt blázat szerkezetének kialakítását t jelenti. 2. Bővítés: szerkezet függf ggő a megvalósítása, sa, soros táblt blázat esetén n az időben folytonosan történik, az új j elem a táblt blázat végére v kerül. 3. Törlés: a logikai változata v esetén n az utolsó elemmel felülírjuk az előzőt, fizikai törlés, ha sok van a táblt blázatban, akkor az adatszerkezetet újra kell szervezni. 53

54 Tárgyszerkezetek 4. Csere: csak adatelemekre hajtható végre, kulcsot nem cserélünk. 5. Rendezés: nincs. 6. Keresés: s: teljes. 7. Elérés: szekvenciális. 8. Feldolgozás: alapja a kulcs. Speciális változatai: v Önátrendező táblázat, melyben az éppen feldolgozott elemet utolsó műveletként a táblázat elejére helyezzük. Ez a táblt blázat már r csak szétsz tszórtan ábrázolható! 54

55 Elmélet Tárgyszerkezetek Speciális változatai: v Rendezett táblt blázat főf jellegzetessége, ge, hogy a kulcsok szerint rendezetten tárolja t az elemeit. Feldolgozásának az alapja a rendezettség, s az ezen alapuló lineáris keresés! s! Kulcstranszformáci ciós s táblt blázat főf jellegzetessége, ge, hogy benne megvalósíthat tható a közvetlen k elérés s is. Ebben a táblt blázatban az elemek sorrendjét egy ún. Hash (hasító) ) függvf ggvény határozza meg, mely a kulcsokat a rendelkezésre álló tárhelyekre képezi k le. 55

56 Tárgyszerkezetek Elmélet I. Homogén n adatszerkezetek 3. Szekvenciális (,vagy lineáris) adatszerkezetek melyek közös k jellemzője, je, hogy az adatelemeik között k jól l definiált viszony áll fenn. Az adott elem pontosan 2 db másik m elemmel áll kapcsolatban, a kivételes tulajdonságú elemektől l eltekintve. Minden ilyen adatszerkezet dinamikus felépítésű! Melyek ezek az adatszerkezetek? LISTA, VEREM, SOR, és SZTRING 56

57 Tárgyszerkezetek Lista olyan adatszerkezet, amelyben egy elemnek pontosan egy rákövetkezr vetkezője van, kivéve ve az utolsó adatelemet és pontosan egy megelőzője van, kivéve ve az elsőt. Ezen az adatszerkezeten speciális jelöléseket és s műveleteket m értelmezünk: Lista jele: q=[x 1,x 2,,x,x n ] (üres( lista: []); Lista feje: head =x 1 ; Lista farka: toid =[x 2,,x,x n ]; Elmélet 57

58 Elmélet Tárgyszerkezetek Speciális jelölések és s műveletek: m Lista vége: v End =x n ; Lista mérete: m Size n= q ; Hozzáférés: Access q[i]=x i, ha i Є[1,n] -nek, akkor az üres listát értük k el; Allista képzk pzése: q[i..j]=[x i,,x,x j ], vagy q[..3]=[x 1,x 2,x 3 ]; Listák összefűzése: se: Concatenation legyen r=[y j,,y,y m ], akkor q&r=[x i,...,x n,y j,,y,y m ] 58

59 Tárgyszerkezetek Elmélet Hogyan hajthatók k végre v ezen az adatszerkezeten a tanult műveletek? m 1. Létrehozás: az elemek felsorolását t jelenti. 2. Bővítés: bárhol b megtehető a listában. q =q[..k]&[e]&q[k+1..] 3. Törlés: csak a fizikai törlt rlés s lehetséges, ez viszont bárhol b a listában. q =q[..k-1]&q[k+1..] 4. Csere: összefűzéssel ssel ez is megvalósíthat tható. q =q[..k-1]&[e]&q[k+1..] 59

60 Elmélet Tárgyszerkezetek 5. Rendezés: értelmezhető.. Folytonos ábrázolás s esetén n bármelyik b algoritmus használhat lható,, szétsz tszórtnál l viszont csak a beszúrásos sos rendezés s megengedett. 6. Keresés: s: folytonos ábrázolásnál l a teljes és s a bináris, szétsz tszórtnál l a lineáris alkalmazható. 7. Elérés: erre a műveletre m vezettük k be az Access funkciót, mely közvetlen k elérést tesz lehetővé. 8. Feldolgozás: az előzőkön n műveletekenm alapul. 60

61 Elmélet Tárgyszerkezetek Listák ábrázolása: mint az előzőekben ekben látható volt, megtehető folytonosan és szétsz tszórtan is! Mindkét ábrázolási módja fontos az adatszerkezetnek. Ha szétsz tszórtan ábrázoljuk, akkor általában kétirányú,, vagy láncolt l listát használunk! Igen fontosak a programozásban a lista fejénél és s végénél v l elvégezhet gezhető műveletek, most ezekkel fogunk részletesebben foglalkozni! 61

62 Tárgyszerkezetek Elmélet Melyek ezek? 1. Fej elérése: Access Head q[1]; 2. Bővítés s a lista fejénél: Push [x]&q; 3. Fej törlt rlése (elhagyása): Pop q[2..]; 4. Vég g elérése: Access End q[ q ]; 5. Bővítés s a végére: v Inject q&[x]; 6. Törlés s a végén: v Eject q[.. q -1]. Ezen műveletek m segíts tségével lehet speciális listákat létrehozni! l 62

63 Gyakorlat Tárgyszerkezetek Miért van szüks kség g a dinamikus adatszerkezetek használat latára? Nézzünk egy példp ldát! Írjunk programot, amely egy Henger nevű struktúrában tárolt t sugár, magasság és s a térfogat t adatokat kétirk tirányú listába fűzi! f FüggvF ggvények olvassák k be az adatokat, készk szítik el a láncot, l és s elvégzik a szüks kséges műveleteket m (beszúrás, s, törlt rlés, kiírás). A létrehozandl trehozandó adatstruktúránk nemcsak lista, hanem faszerkezet kialakítását is lehetővé teszi. Magát t a struktúrát t egy fejléc fájlban tároljuk, t melyet a különfk nféle függvényeinkben használunk fel. 63

64 Gyakorlat Tárgyszerkezetek #include <stdio.h> #include <stdlib.h> #include <math.h> #define PI typedef struct hr { int sugar; int magassag; double terfogat; /* önhivatkozás s típusnt pusnévvel */ struct hr *kov, *elozo; } Henger; /* elődeklar deklarációk k következnek k */ 64

65 Tárgyszerkezetek Henger* Olvas(Henger **u); void KiirElore(Henger* e); void KiirHatra(Henger* u); void BeszurV(Henger **e, Henger **v, int r, int h); Henger* Torol(Henger *e, Henger **u, int x1, int y1); /* prototípusok pusok */ /* LISTAFG.H */ Gyakorlat A többi t függvf ggvényt a Dev-C++ fejlesztői környezet segíts tségével fogom bemutatni! 65

66 Tárgyszerkezetek Gyakorlat A Listafg.cpp állománynak az alábbi függvf ggvényeket kell tartalmaznia: Olvas() függvény értékként visszaadja a lánc l elejére, ill. egy paraméteren keresztül l a lánc l végére mutató pointert. Beolvassa az adatok darabszámát, dinamikusan létrehozza l a lánc l elemeit a malloc() függvf ggvénnyel, majd kiszámítja a térfogatot, t ill. láncba l fűzi f az elemeket. KiirElore() függvény a paraméterben kapja a lánc első elemére mutató pointert. KiirHatra() függvény a paraméterlist terlistán n kapja a lánc utolsó elemére mutató pointert. 66

67 Gyakorlat Tárgyszerkezetek A Listafg.cpp állománynak az alábbi függvf ggvényeket kell tartalmaznia: BeszurV() függvény paraméterlist terlistán n kapja a lánc l első elemére mutató pointert és s a beszúrand randó (sugar, magassag) adatokat. A függvf ggvény a lánc l végére szúrja be az új j listaelemet és s kiszámítja a henger térfogatt rfogatát. t. Visszatérési si értékként a lánc l elejére és s végére v mutató pointerek megváltozott értékét t szolgáltatja. ltatja. Torol() függvény a paraméterlist terlistán n kapja a lánc l elso és utolso elemére mutató pointert, valamint a törölni t kívánt k henger adatait. Az utolso mutató megváltozott értékét t pointerben (**utolso( **utolso)) adja. 67

68 Tárgyszerkezetek 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: Gyakorlat R 2 *PI*magasság képlet alapján. Strázsaelemek újbóli beállítása. 68

69 Tárgyszerkezetek Gyakorlat Itt a visszamutató pointert kell az előző elemre állítani a láncon való végiglépkedés érdekében! 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! 69

70 Tárgyszerkezetek 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. Gyakorlat Az eljárás eredményeként megváltoznak a lánc elejére és a végére mutató pointerek értékei. 70

71 Tárgyszerkezetek Paraméterek: a szokott mutatók és a henger adatai. Az utolso mutató új értékét pointerben kell megadni. Gyakorlat Visszaadott értéke: pointer. 71

72 Tárgyszerkezetek 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. Gyakorlat 72

73 Tárgyszerkezetek Videó! Gyakorlat 73

74 Tárgyszerkezetek Gyakorlat Miért van szüks kség g a dinamikus adatszerkezetek használat latára? Nézzünk egy példp ldát! T.f.,., hogy áruházi eladások adatait kell tárolnunk. t Az eladásokat egy vetel nevű struktúra ra reprezentálja, egy-egy int típusú mezővel az árukódnak, ill. az eladott darabszámnak a jelölésére, tovább bbá létezik egy char c[1000] tömb, valamiféle le termékinform kinformáció tárolására. ra. Ha azt tudjuk, hogy 1000-nél l több t adat biztosan nem jön, j akkor: struct vetel v[1000] lesz a struktúránk! Ha azonban csak néhány n ny vásárlv rlási adatunk van, akkor óriási pazarlást végeztv geztünk! 74

75 Gyakorlat Tárgyszerkezetek E probléma megoldására alkalmazhatunk pl. kétirányban láncolt listát. t. A lista elején és végén úgynevezett strázsaelemmel. Az előzőekben ekben leírt feladatot egyszerűsítj tjük és a vetel struktúrában csak az arukod és s az eladottdb mezőket szerepeltetjük! A láncolt l lista alapja az, hogy a struktúráinkat kiegész szítjük k 2 mutatóval, melyek típusa t struct vetel*.. Az egyik a tárolt roló listában az elemet megelőzőre (struct vetel *elozo),, a másik az őt t követk vetőre (struct vetel *kovetkezo) mutat. Az elemek így összefűzve zve láncot l alkotnak! 75

76 Gyakorlat Tárgyszerkezetek A lista kezdetben üres, csak a határokat jelző 2 strázsaelem van benne. Új j elem beszúrása sa úgy törtt rténik, hogy elindulunk a lista 1. elemétől, l, és s a mutatók k mentén n addig lépkedünk a listában, amíg g a beszúrand randó elem helyét t meg nem találjuk. ljuk. Mivel a listát növekvő elemsorrenddel építjük k fel, ezért az új j elemet azon két k t elem közék kell beszúrni, ahol az elem kulcsa még m kisebb, mint a beszúrand randóé,, de a elemé már r nagyobb! A beszúrás s maga egyszerű mutató átállítás s lesz: az kovetkezo és s a elozo mutatóját t az új j elemre állítjuk! 76

77 Tárgyszerkezetek Gyakorlat Már r csak az új j elem mutatóit kell beáll llítanunk: az elozo mutasson az elemre a kovetkezo a elemre! Kész K a beláncol ncolás! Ha minden elem kulcsa kisebb, mint a beszúrand randóé (,vagy még m g nincs is elem a listában), akkor a lépkedl pkedés s során n a listavéget jelentő strázsaelemig jutunk. Ekkor ezen elem elé kell beszúrnunk, ugyanazzal az algoritmussal, mint amit az előbb használtunk. Implementálása C-ben C a következk vetkező: 77

78 Gyakorlat Tárgyszerkezetek #include <stdio.h> struct vetel { int arukod; /* ez a kulcsmező */ int eladottdb; struct vetel *kovetkezo; struct vetel *elozo; }; struct vetel *kezdo; struct vetel *veg; /* strázsaelemek */ struct vetel *aktualis; struct vetel *uj; struct vetel *keres(int); 78

79 Tárgyszerkezetek Gyakorlat void beszur(struct vetel *v); void listaz(); void torol(int kod); int main() { /* elődeklar deklaráció */ kezdo=(struct vetel *)malloc(sizeof(struct vetel)); veg=(struct vetel *)malloc(sizeof(struct vetel)); kezdo->kovetkezo=veg; veg->elozo=kezdo; /* strázs zsák k inicializálása */ uj=(struct vetel *)malloc(sizeof(struct vetel)); uj->arukod=2; uj->eladottdb=1; 79

80 Tárgyszerkezetek Gyakorlat beszur(uj); uj=(struct vetel *)malloc(sizeof(struct vetel)); uj->arukod=1; beszur(uj); listaz(); uj->eladottdb=1; printf( \nt ntörlés s után\n ); torol(1); listaz(); return 0; } /* main vége v */ 80

81 Elmélet Tárgyszerkezetek Verem LIFO adatszerkezet 2 művelet m értelmezett rajta: az adott elem utáni bevitel és s a kivétel, vagyis a PUSH és s a POP a fejnél Hogyan hajthatók k végre v ezen az adatszerkezeten a tanult műveletek? m 1. Létrehozás: az üres verem elkész szítése. se. 2. Bővítés: csak a meglévő elemek után történhet, vagyis a verem tetején. 3. Törlés: csak a legutolsó elemet lehet fizikailag törölni, t mely az 1. sorszámú. 81

82 Tárgyszerkezetek Elmélet 4. Csere: nincs. 5. Rendezés: nincs. 6. Keresés: s: nincs. 7. Elérés: nincs. 8. Feldolgozás: csak a legutolsó elemre vonatkozhat, mely a verem feje. Szétsz tszórt módon m ábrázolható,, egyirány nyú listával. Létezik L egy ún. vektorreprezentáci ciója is, mely a veremmutatóra ra épül. 82

83 Elmélet Tárgyszerkezetek Jellemzőjük, hogy speciális fogalmakat értelmezhetünk rájuk: r Üres és s Tele. A széls lsőséges elemek implementáci ciója nehéz. Elsősorban sorban arra való,, hogy a segíts tségével megfordíthatunk egy a keletkezéskor meglévő elemsorrendet! Semmilyen program, ill. operáci ciós rendszer nem létezik l verem nélkn lkül. l. A futó programok, ill. folyamatok közötti k váltást mindig a veremmemória ria (stack memory) segíts tségével valósítjuk meg. 83

84 Elmélet Tárgyszerkezetek Sor FIFO adatszerkezet 4 művelet m értelmezett rajta: a fej elérése (Access Head), a fej elhagyása (POP), beszúrás s a végére v (Inject), és s a vég g elérése (Access End). Sor esetén n e műveleteknek m speciális nevük k van: PUT (olvasás s elölr lről, l, majd pedig törlt rlés), GET (írás( s a végén). v Hogyan hajthatók k végre v ezen az adatszerkezeten a tanult műveletek? m 1. Létrehozás: üres sor létrehozl trehozása. 84

85 Elmélet Tárgyszerkezetek 2. Bővítés: csak a sor végén v n lehetséges. 3. Törlés: csak a sor elején n lehetséges és csak fizikailag. 4. Csere: nincs. 5. Rendezés: nincs. 6. Keresés: s: nincs. 7. Elérés: nincs. 8. Feldolgozás: csak a legelső elemre vonatkozhat, mely a sor feje. Ábrázolása törtt rténhet folyamatosan és szétsz tszórtan is. 85

86 Tárgyszerkezetek Szétsz tszórt ábrázolásnál: két k t fejjel ellátott egy irányban láncolt l listát t használunk. Folytonos ábrázolásnál: általában vektor reprezentáci ciót t alkalmazunk. Speciális sorok: Fix kezdetű sor: az elején n van az 1-es 1 indexű,, s 1 mutatója van, a vége. v Vándorló sor: 2 mutatója van, az eleje és s a vége. v Elmélet 86

87 Elmélet Speciális sorok: Tárgyszerkezetek Ciklikus sor: jellemzője, je, hogy nincs benne elemmozgatás, csak írás és olvasás. s. Kettős, vagy 2 végűv sor: benne mind a 6 speciális művelet m realizálhat lható. Vagyis mindkét t végéről v l lehet írni és olvasni is (GET, PUT, RGET, RPUT), 2 összefordított veremhez hasonlíthat tható.. (Által( ltalában ilyen a memóriakezel riakezelés.) 87

88 Speciális sorok: Tárgyszerkezetek Prioritásos sor: e sorban az adatelemeknek van egy speciális jellemzője, je, a prioritás, mely meghatározza az írási és s a feldolgozási sorrendet. A sorokat, mint adatszerkezeteket mindenfajta pufferelésn snél l használjuk! Elmélet 88

89 Tárgyszerkezetek Elmélet Sztring olyan speciális lista, melynek specialitása sa az, hogy az elemei az abc szimbólumai. (Olyan sztringekkel foglalkozunk, melyek elemei karakterek.) Hogyan hajthatók k végre v ezen az adatszerkezeten a tanult műveletek? m 1. Létrehozás: feltölt ltéssel törtt rténik. 2. Bővítés: csak részsztringekre r vonatkozik ez a művelet. m 89

90 Tárgyszerkezetek Elmélet 3. Törlés: bármelyik b részsztringet r törölhetjük, de csak fizikailag. 4. Csere: szintén n csak részsztringre r vonatkozik. 5. Rendezés: nincs. 6. Elérés: a sztring bármelyik b karaktere elérhet rhető. 7. Keresés: s: csak részsztringre r értelmezzük. 8. Feldolgozás: alapja a részsztringre r vonatkozó keresés. s. 90

91 Elmélet Ábrázolása törtt Tárgyszerkezetek rténhet folytonosan és szétsz tszórtan is, de az utóbbit ritkán használjuk. A folytonos ábrázolást használva a következő reprezentáci ciók lehetségesek: 1. Minden karakternek azonos méretm retű tárhelyet foglalunk le. (pl.: 1 karakter = 1 byte) 2. Minden sztringnek annyit foglalunk le, amennyi a karakterszámb mból l adódik. dik. 91

92 Tárgyszerkezetek Elmélet 2. Ilyenkor a lefoglalt tárhely t elején n (1, vagy 2 bájton) b jelezzük k a sztring hosszát. Vagy esetleg a sztirng végén v n helyezünk el egy plusz bájtot, b mely a sztring végét v jelzi. Vagy lefoglalunk annyi bájtot, b amennyi a karaktereknek szüks kséges, s egy külön k n táblt blázatban tároljuk t azt az informáci ciót, hogy hol kezdődik dik a sztring. (A Pascal a 2., a C a 3. variáci ciót használja.) A sztring adatszerkezet alapproblémája a Keresés s kérdk rdése. 92

93 Tárgyszerkezetek A keresés, s, mint a legtöbb adatmanipuláci ciós s művelet m a sztringek esetében részsztringekre r vonatkozik. Elmélet Ezt a problémát t az ún. Mintaillesztéssel ssel oldhatjuk meg. Lényege, L hogy adva van egy alapsztring, melyet jelölj ljünk a-val, és s egy mintasztring, melyet jelölj ljünk b-vel. Meg kell határoznunk azt, hogy a mintasztring előfordul fordul-e, s ha igen, akkor hányszor h az alapsztringben. 93

94 Elmélet Tárgyszerkezetek Milyen algoritmusok képesek k e műveletet m hatékonny konnyá tenni? Több megoldás s is létezik: l 1. Mezitlábas algoritmus lényege a mintasztringgel törtt rténő elemenkénti nti összehasonlítás, s, a képfeldolgozk pfeldolgozásban alkalmazzák. k. 2. KMP algoritmus mely kihasználja a mintasztringnek az önmagára való illesztését. t. 3. Dömölki-féle le algoritmus nincs benne semmilyen visszalépés s (bitmátrix). trix). 94

95 Tárgyszerkezetek Elmélet I. Homogén n adatszerkezetek 4. Hierarchikus minden elemének egy megelőzője és s akárh rhány rákövetkezr vetkezője lehet. A legfontosabb konkrét t ilyen adatszerkezet a Fa,, ez matematikailag egy speciális gráf. Fa adatszerkezet: van egy kitüntetett eleme, ez a gyökérelem relem,, melynek nincs megelőzője. Akárh rhány olyan eleme lehet, melynek nincs rákövetkezője, ezek a levélelemek lelemek. 95

96 Tárgyszerkezetek Elmélet A fában f a gyökért rtől l a levélig lig egy adott sorozaton keresztül l juthatunk el. Ezt a bejárást útnak nevezzük. Dinamikus adatszerkezet. A fa szintjeinek magasságát,, a fa magasságának nevezzük. A fa bármely b eleme lehet egy részfa gyökéreleme. A fákkal f végezhetv gezhető műveletek általában részfr szfákra vonatkoznak. Rendezettnek nevezzük k a fát, ha a rákövetkezr vetkezőinek a sorrendje meghatározott. 96

97 Tárgyszerkezetek Elmélet Azt a fát, f ahol minden elemnek 2 db rákövetkezője lehet, bináris fának f nevezzük. Rendezett bináris fáknf knál beszélhet lhetünk bal-,, ill. jobb oldali rákövetkezőről. Ennek az adatszerkezetnek alapvető szerepe van az informatikában. Bármilyen B nem bináris fa reprezentálhat lható egy megfelelő módon előáll llított bináris fával. f A leképez pezés s a következk vetkező: 97

98 Tárgyszerkezetek a a e b c f d g h e b f c d 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. g h Elmélet 98

99 Elmélet Tárgyszerkezetek Hogyan hajthatók k végre v ezen az adatszerkezeten a tanult műveletek? m 1. Létrehozás: létrehozzuk l a gyökérelemet, majd pedig bővítünk. b 2. Bővítés: általában a levélelemekn lelemeknél történik, valamekkora méretm retű részfával. 3. Törlés: általában részfr szfát t törlt rlünk fizikailag, logikai törlt rlés s nincs. 4. Csere: bármely b elem könnyen k felülírhat rható. 5. Rendezés, Keresés és s Elérés: helyett Feldolgozás: alapja a bejárás. 99

100 Tárgyszerkezetek Gyakorlat Bináris fák f k bejárása 3 féle f módon m történhet: Preorder, Inorder és Posztorder módon. m 1. Preorder bejárás: Ha üres a fa, akkor vége. v Ha nem üres, akkor megfogjuk a gyökérelemet, majd preorder módon m (a legbaloldalibb megfogásával) bejárjuk a baloldali részfr szfát, majd preorder módon m bejárjuk a jobboldali részfr szfát. Ezen a módon m kapjuk egy matematikai kifejezés s prefix alakját! 2. Inorder bejárás: Ha üres Inorder módon m bejárjuk a baloldalt, megfogjuk a gyökérelemet, majd inorder módon m a jobboldali részfr szfát. Így állítjuk elő a matematikai kifejezés s infix alakját. 100

101 Tárgyszerkezetek a / + * b c - d e Prefix kifejezés: +/ab*c-de Infix kifejezés: a/b+c*d-e Posztfix kifejezés: ab/cde-*+ Gyakorlat 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! 101

102 Tárgyszerkezetek Gyakorlat A prefix és s a posztfix alakja egy kifejezésnek kölcsk lcsönösen sen egyértelm rtelműen en megfeleltethető egy bináris fának, f de az infix alakja nem. Ekkor annyi darab különbk nböző fánk lehet, ahány operátora van a kifejezésnek. Ezt az ellentmondást a zárójelezéssel oldhatjuk fel! Vagyis: Speciális fák: f ((a/b)+(c*(d-e))) 102

103 Elmélet 1. Minim Tárgyszerkezetek Minimális magasságú fa olyan fa, mely egy adott elemszám m mellett a lehető legkevesebb szintet tartalmazza. 2. Tökéletesen kiegyensúlyozott fa benne minden elemre igaz, hogy az adott elem bal- és s jobboldali részfr szfájában az elemek száma legfeljebb eggyel tér t el egymást stól. 3. Kereső fa az adatelemei olyanok, hogy van kulcsuk, s így értelmezhető rajtuk a keresés s művelete. m 103

104 Elmélet 4. Felf Tárgyszerkezetek Felfűzött fa a preorder és s az inorder bejárást segítő fa. 5. B-fa a többt bbágú fa egy speciális változata, a kereső fa általánosítása. sa. Tökéletesen kiegyensúlyozott lapokból áll! Egy lapon több t elem helyezhető el, a levéllapok llapok mind egy szinten vannak. Minden ilyen fának f rendje (n) van. Minden lapon maximum 2n db elem helyezhető el. A gyökérlapon legalább 1 db, a többi t lapon legalább n db elem. 104

105 Keresés a 2-rendű B-fában A lapokra szintenként lefelé haladva maximum 2 n db elem kerülhet! ,5,7,8 13,14,15,18 22,24 26,27,28 32,35,38 41,44,45,46 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. Elmélet Vizsgáljuk meg erre az adatszerkezetre a tanult műveleteket! 105

106 Elmélet Tárgyszerkezetek 1. Létrehozás: létrehozzuk l a gyökérelemet, majd pedig bővítünk. b 2. Bővítés: elősz ször r megkeressük k a bővítőb elem helyét t a fában, f mely csak levéllapon llapon lehet. Pl. az előző fa esetén n legyen ez most 23! Ekkor, ha az adott lapon 2n-nél l kevesebb elem van, akkor a rendezettséget megtartva elhelyezzük. Ha pont 2n elem van a lapon, akkor lapfelezés következik be. Ilyenkor az új j elem elhelyezése után n kiválasztjuk az elemek közül k l a középsk psőt, melyet az egy szinttel felette lévől lapra helyezünk, s az eredeti lapon maradt 2n db elemet ketté osztjuk (megfelezzük). 106

107 Tárgyszerkezetek Elmélet 2. Bővítés: a lapfelezés s során n 1 db új j levéllap llap keletkezik. Előfordulhat az is, hogy a lapfelezés s végiggyv giggyűrűzik a fán, f s ekkor nőn a fa magassága. ga. 3. Törlés: mindig fizikai és s bármelyik b elem törölhető.. Hasonló módszerrel törtt rténik, mint a bővítés. Ha a levéllapon llapon van a törlendt rlendő elem, akkor a megkeresése se után n törölhett lhető.. Ha nem levéllapon llapon van, akkor felülírjuk őt t egy ott maradó elemmel, majd pedig töröljt ljük. Ha a törlendő elemet tartalmazó lapon csak n db elem találhat lható,, akkor egy azonos szinten találhat lható (ún. testvérlapr rlapról) l) hozunk át t elemet. 107

108 Tárgyszerkezetek 3. Törlés: ha nincs lehetőség g a testvérlapr rlapról l elem áthozatalára, akkor lapösszevon sszevonást st kell elvégezn geznünk. nk. A lapösszevon sszevonás s végiggv giggöröghet ghet a fán, s ilyenkor csökken a fa magassága. ga. 4. Csere: nem értelmezett. 5. Rendezés: a lapok a kulcs szerint rendezettek. 6. Keresés: s: kulcs szerinti lineáris a lapokon belül. l. 7. Elérés: bejárással törtt rténik. 8. Feldolgozás: A B-fát B t mindig a memóri riában építjük k fel, s ilyenkor az alapja az ismertetett keresés s lesz. Elmélet 108

109 Tárgyszerkezetek Elmélet Fák ábrázolása: : lehetséges folytonosan és szétsz tszórtan is. Ha folytonosan törtt rténik, akkor 1 dimenziós s tömbt mböt t alkalmazunk rá,, használata a statikusság g miatt nem célszerű. Általában a szétsz tszórt ábrázolást használjuk, kétirk tirányú lista felhasználásával. A bejárás s művelet m elvégz gzése során n a fát f t sorra képezzk pezzük k le. E művelet m értelmezhető többágú fákra is, amikor preorder módon m bejárjuk a legbaloldalibb részfr szfát, majd a többit t is! 109

110 Tárgyszerkezetek Gyakorlat Miért van szüks kség g a dinamikus adatszerkezetek használat latára? Nézzünk egy példp ldát! T.f., hogy áruházi eladások adatait kell tárolnunk. t Az eladásokat egy vetel nevű struktúra ra reprezentálja, egy-egy int típusú mezővel az árukódnak, ill. az eladott darabszámnak a jelölésére, tovább bbá létezik egy char c[1000] tömb, valamiféle le termékinform kinformáció tárolására. ra. Ha azt tudjuk, hogy 1000-nél l több t adat biztosan nem jön, j akkor: struct vetel v[1000] lesz a struktúránk! Ha azonban csak néhány n ny vásárlv rlási adatunk van, akkor óriási pazarlást végeztv geztünk! 110

111 Gyakorlat Tárgyszerkezetek E probléma megoldására alkalmazhatunk pl. kétirányban láncolt l listát, t, vagy bináris keresőfát.. A lista elején és s végén v úgynevezett strázsaelemmel. Az előzőekben ekben leírt feladatot egyszerűsítj tjük és a vetel struktúrában csak az arukod és s az eladottdb mezőket szerepeltetjük! A tárolandt rolandó elemeket a bináris fában f is mutatók kötik össze, mint a listában. Minden csomóponthoz legfeljebb 2 másik m csomópont tartozik, ezek lesznek a csomópont gyermekei. A gyermekekre a bal és s a jobb mutatók k fognak mutatni! 111

112 Bináris keresőfa NULL Gyakorlat NULL 3 4 NULL NULL NULL NULL 21 2 NULL 112

113 Bináris keresőfa programja Struktúra létrehozása: #include <stdio.h> #include <stdlib.h> Gyakorlat 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. 113

114 Bináris keresőfa programja Gyakorlat Beszú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; } 114

115 Bináris keresőfa programja Gyakorlat Hogyan 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! 115

116 Bináris keresőfa programja Gyakorlat Hogyan 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ú! 116

117 Bináris keresőfa programja Gyakorlat Nö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); } } 117

118 Bináris keresőfa programja Gyakorlat Nö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őfatulajdonságnak megfelelően növekvő sorrendben fogja kiírni az elemeket. A rekurziókat pedig a NULL mutató elérése fogja befejeztetni. 118

119 Bináris keresőfa programja Gyakorlat Keresé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); } 119

120 Bináris keresőfa programja Gyakorlat Keresé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! 120

121 Bináris keresőfa programja Gyakorlat Fő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; 121

122 Bináris keresőfa programja Gyakorlat Fő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; } 122

123 Elmélet Tárgyszerkezetek I. Homogén n adatszerkezetek 5. Hálós s adatszerkezetek HÁLÓ,, mely tekinthető a hierarchikus adatszerkezetek általánosításának. nak. Bármely eleme lehet az őt t megelőzője, és s a rákövetkezr vetkezője is, akár r még m önmagáé is. Nincs kitüntetett elemük és dinamikusak! Matematikailag egy irány nyított, összefüggő gráfnak tekintjük. k. A szerkezetet magával az ábrázolással definiáljuk, mely törtt rténhet az előbb említett irány nyított gráffal, vagy ún. 123

124 Tárgyszerkezetek Hálós s adatszerkezetek a szerkezet megadása. 1. Irány nyított gráf f segíts tségével: a c e b d f Elmélet

125 Tárgyszerkezetek 2. Szomszédoss dossági mátrix m segíts tségével: Elmélet 1. a b c d 5. e f 6. Ha 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. 125

Adatszerkezetek 1. előadás

Adatszerkezetek 1. előadás Adatszerkezetek 1. előadás Irodalom: Lipschutz: Adatszerkezetek Morvay, Sebők: Számítógépes adatkezelés Cormen, Leiserson, Rives, Stein: Új algoritmusok http://it.inf.unideb.hu/~halasz http://it.inf.unideb.hu/adatszerk

Részletesebben

Egyirányban láncolt lista

Egyirányban láncolt lista Egyirányban láncolt lista A tárhely (listaelem) az adatelem értékén kívül egy mutatót tartalmaz, amely a következő listaelem címét tartalmazza. A láncolt lista első elemének címét egy, a láncszerkezeten

Részletesebben

10. előadás Speciális többágú fák

10. előadás Speciális többágú fák 10. előadás Adatszerkezetek és algoritmusok előadás 2018. április 17., és Debreceni Egyetem Informatikai Kar 10.1 A többágú fák kezelésére nincsenek általános elvek, implementációjuk elsősorban alkalmazásfüggő.

Részletesebben

A programozás alapjai előadás. [<struktúra változó azonosítók>] ; Dinamikus adatszerkezetek:

A programozás alapjai előadás. [<struktúra változó azonosítók>] ; Dinamikus adatszerkezetek: A programozás alapjai 1 Dinamikus adatszerkezetek:. előadás Híradástechnikai Tanszék Dinamikus adatszerkezetek: Adott építőelemekből, adott szabályok szerint felépített, de nem rögzített méretű adatszerkezetek.

Részletesebben

Adatszerkezetek Adatszerkezet fogalma. Az értékhalmaz struktúrája

Adatszerkezetek Adatszerkezet fogalma. Az értékhalmaz struktúrája Adatszerkezetek Összetett adattípus Meghatározói: A felvehető értékek halmaza Az értékhalmaz struktúrája Az ábrázolás módja Műveletei Adatszerkezet fogalma Direkt szorzat Minden eleme a T i halmazokból

Részletesebben

Struktúra nélküli adatszerkezetek

Struktúra nélküli adatszerkezetek Struktúra nélküli adatszerkezetek Homogén adatszerkezetek (minden adatelem azonos típusú) osztályozása Struktúra nélküli (Nincs kapcsolat az adatelemek között.) Halmaz Multihalmaz Asszociatív 20:24 1 A

Részletesebben

Adatszerkezetek és algoritmusok

Adatszerkezetek és algoritmusok 2010. január 8. Bevezet El z órák anyagainak áttekintése Ismétlés Adatszerkezetek osztályozása Sor, Verem, Lengyelforma Statikus, tömbös reprezentáció Dinamikus, láncolt reprezentáció Láncolt lista Lassú

Részletesebben

Mutatók és címek (ism.) Programozás alapjai C nyelv 8. gyakorlat. Indirekció (ism) Néhány dolog érthetőbb (ism.) Változók a memóriában

Mutatók és címek (ism.) Programozás alapjai C nyelv 8. gyakorlat. Indirekció (ism) Néhány dolog érthetőbb (ism.) Változók a memóriában Programozás alapjai C nyelv 8. gyakorlat Szeberényi mre BME T Programozás alapjai. (C nyelv, gyakorlat) BME-T Sz.. 2005.11.07. -1- Mutatók és címek (ism.) Minden változó és függvény

Részletesebben

Programozás alapjai C nyelv 8. gyakorlat. Mutatók és címek (ism.) Indirekció (ism)

Programozás alapjai C nyelv 8. gyakorlat. Mutatók és címek (ism.) Indirekció (ism) Programozás alapjai C nyelv 8. gyakorlat Szeberényi Imre BME IIT Programozás alapjai I. (C nyelv, gyakorlat) BME-IIT Sz.I. 2005.11.07. -1- Mutatók és címek (ism.) Minden változó és függvény

Részletesebben

Programozás alapjai II. (7. ea) C++ Speciális adatszerkezetek. Tömbök. Kiegészítő anyag: speciális adatszerkezetek

Programozás alapjai II. (7. ea) C++ Speciális adatszerkezetek. Tömbök. Kiegészítő anyag: speciális adatszerkezetek Programozás alapjai II. (7. ea) C++ Kiegészítő anyag: speciális adatszerkezetek Szeberényi Imre BME IIT M Ű E G Y E T E M 1 7 8 2 C++ programozási nyelv BME-IIT Sz.I. 2016.04.05. - 1

Részletesebben

Speciális adatszerkezetek. Programozás alapjai II. (8. ea) C++ Tömbök. Tömbök/2. N dimenziós tömb. Nagyméretű ritka tömbök

Speciális adatszerkezetek. Programozás alapjai II. (8. ea) C++ Tömbök. Tömbök/2. N dimenziós tömb. Nagyméretű ritka tömbök Programozás alapjai II. (8. ea) C++ Kiegészítő anyag: speciális adatszerkezetek Szeberényi Imre BME IIT Speciális adatszerkezetek A helyes adatábrázolás választása, a helyes adatszerkezet

Részletesebben

Programozás alapjai II. (7. ea) C++

Programozás alapjai II. (7. ea) C++ Programozás alapjai II. (7. ea) C++ Kiegészítő anyag: speciális adatszerkezetek Szeberényi Imre BME IIT M Ű E G Y E T E M 1 7 8 2 C++ programozási nyelv BME-IIT Sz.I. 2016.04.05. - 1

Részletesebben

Adatszerkezetek. Nevezetes algoritmusok (Keresések, rendezések)

Adatszerkezetek. Nevezetes algoritmusok (Keresések, rendezések) Adatszerkezetek Nevezetes algoritmusok (Keresések, rendezések) Keresések A probléma általános megfogalmazása: Adott egy N elemű sorozat, keressük meg azt az elemet (határozzuk meg a helyét a sorozatban),

Részletesebben

Algoritmusok és adatszerkezetek gyakorlat 07

Algoritmusok és adatszerkezetek gyakorlat 07 Algoritmusok és adatszerkezetek gyakorlat 0 Keresőfák Fák Fa: összefüggő, körmentes gráf, melyre igaz, hogy: - (Általában) egy gyökér csúcsa van, melynek 0 vagy több részfája van - Pontosan egy út vezet

Részletesebben

Elemi adatszerkezetek

Elemi adatszerkezetek 2017/12/16 17:22 1/18 Elemi adatszerkezetek < Programozás Elemi adatszerkezetek Szerző: Sallai András Copyright Sallai András, 2011, 2014 Licenc: GNU Free Documentation License 1.3 Web: http://szit.hu

Részletesebben

Adatszerkezetek 7a. Dr. IványiPéter

Adatszerkezetek 7a. Dr. IványiPéter Adatszerkezetek 7a. Dr. IványiPéter 1 Fák Fákat akkor használunk, ha az adatok között valamilyen alá- és fölérendeltség van. Pl. könyvtárszerkezet gyökér () Nincsennek hurkok!!! 2 Bináris fák Azokat a

Részletesebben

A számítástudomány alapjai. Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem

A számítástudomány alapjai. Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem A számítástudomány alapjai Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem Bináris keresőfa, kupac Katona Gyula Y. (BME SZIT) A számítástudomány

Részletesebben

Algoritmusok és adatszerkezetek gyakorlat 06 Adatszerkezetek

Algoritmusok és adatszerkezetek gyakorlat 06 Adatszerkezetek Algoritmusok és adatszerkezetek gyakorlat 06 Adatszerkezetek Tömb Ugyanolyan típusú elemeket tárol A mérete előre definiált kell legyen és nem lehet megváltoztatni futás során Legyen n a tömb mérete. Ekkor:

Részletesebben

Algoritmusok és adatszerkezetek I. 1. előadás

Algoritmusok és adatszerkezetek I. 1. előadás Algoritmusok és adatszerkezetek I 1 előadás Típusok osztályozása Összetettség (strukturáltság) szempontjából: elemi (vagy skalár, vagy strukturálatlan) összetett (más szóval strukturált) Strukturálási

Részletesebben

Tartalom Keresés és rendezés. Vektoralgoritmusok. 1. fejezet. Keresés adatvektorban. A programozás alapjai I.

Tartalom Keresés és rendezés. Vektoralgoritmusok. 1. fejezet. Keresés adatvektorban. A programozás alapjai I. Keresés Rendezés Feladat Keresés Rendezés Feladat Tartalom Keresés és rendezés A programozás alapjai I. Hálózati Rendszerek és Szolgáltatások Tanszék Farkas Balázs, Fiala Péter, Vitéz András, Zsóka Zoltán

Részletesebben

Információs Technológia

Információs Technológia Információs Technológia Rekurzió, Fa adatszerkezet Fodor Attila Pannon Egyetem Műszaki Informatika Kar Villamosmérnöki és Információs Rendszerek Tanszék foa@almos.vein.hu 2010. november 18. Rekurzió Rekurzió

Részletesebben

Adatszerkezetek 1. Dr. Iványi Péter

Adatszerkezetek 1. Dr. Iványi Péter Adatszerkezetek 1. Dr. Iványi Péter 1 Adat Adat minden, amit a számítógépünkben tárolunk és a külvilágból jön Az adatnak két fontos tulajdonsága van: Értéke Típusa 2 Adat típusa Az adatot kódoltan tároljuk

Részletesebben

Adatszerkezetek I. 7. előadás. (Horváth Gyula anyagai felhasználásával)

Adatszerkezetek I. 7. előadás. (Horváth Gyula anyagai felhasználásával) Adatszerkezetek I. 7. előadás (Horváth Gyula anyagai felhasználásával) Bináris fa A fa (bináris fa) rekurzív adatszerkezet: BinFa:= Fa := ÜresFa Rekord(Elem,BinFa,BinFa) ÜresFa Rekord(Elem,Fák) 2/37 Bináris

Részletesebben

Hierarchikus adatszerkezetek

Hierarchikus adatszerkezetek 5. előadás Hierarchikus adatszerkezetek A hierarchikus adatszerkezet olyan < A, R > rendezett pár, amelynél van egy kitüntetett r A gyökérelem úgy, hogy: 1. r nem lehet végpont, azaz a A esetén R(a,r)

Részletesebben

Keresés és rendezés. A programozás alapjai I. Hálózati Rendszerek és Szolgáltatások Tanszék Farkas Balázs, Fiala Péter, Vitéz András, Zsóka Zoltán

Keresés és rendezés. A programozás alapjai I. Hálózati Rendszerek és Szolgáltatások Tanszék Farkas Balázs, Fiala Péter, Vitéz András, Zsóka Zoltán Keresés Rendezés Feladat Keresés és rendezés A programozás alapjai I. Hálózati Rendszerek és Szolgáltatások Tanszék Farkas Balázs, Fiala Péter, Vitéz András, Zsóka Zoltán 2016. november 7. Farkas B., Fiala

Részletesebben

Programozási segédlet

Programozási segédlet Programozási segédlet Programozási tételek Az alábbiakban leírtam néhány alap algoritmust, amit ismernie kell annak, aki programozásra adja a fejét. A lista korántsem teljes, ám ennyi elég kell legyen

Részletesebben

A lista adatszerkezet A lista elemek egymásutániságát jelenti. Fajtái: statikus, dinamikus lista.

A lista adatszerkezet A lista elemek egymásutániságát jelenti. Fajtái: statikus, dinamikus lista. Lista adatszerkezet A lista adatszerkezet jellemzői 1 Különböző problémák számítógépes megoldása során gyakran van szükség olyan adatszerkezetre, amely nagyszámú, azonos típusú elem tárolására alkalmas,

Részletesebben

Programozás alapjai 9. előadás. Wagner György Általános Informatikai Tanszék

Programozás alapjai 9. előadás. Wagner György Általános Informatikai Tanszék 9. előadás Wagner György Általános Informatikai Tanszék Leszámoló rendezés Elve: a rendezett listában a j-ik kulcs pontosan j-1 kulcsnál lesz nagyobb. (Ezért ha egy kulcsról tudjuk, hogy 27 másiknál nagyobb,

Részletesebben

Láncolt listák Témakörök. Lista alapfogalmak

Láncolt listák Témakörök. Lista alapfogalmak Láncolt listák szenasi.sandor@nik.bmf.hu PPT 2007/2008 tavasz http://nik.bmf.hu/ppt 1 Lista alapfogalmai Egyirányú egyszerű láncolt lista Egyirányú rendezett láncolt lista Speciális láncolt listák Témakörök

Részletesebben

Láncolt listák. Egyszerű, rendezett és speciális láncolt listák. Programozás II. előadás. Szénási Sándor

Láncolt listák. Egyszerű, rendezett és speciális láncolt listák. Programozás II. előadás.  Szénási Sándor Láncolt listák Egyszerű, rendezett és speciális láncolt listák előadás http://nik.uni-obuda.hu/prog2 Szénási Sándor szenasi.sandor@nik.uni-obuda.hu Óbudai Egyetem,Neumann János Informatikai Kar Láncolt

Részletesebben

Rekurzió. Dr. Iványi Péter

Rekurzió. Dr. Iványi Péter Rekurzió Dr. Iványi Péter 1 Függvényhívás void f3(int a3) { printf( %d,a3); } void f2(int a2) { f3(a2); a2 = (a2+1); } void f1() { int a1 = 1; int b1; b1 = f2(a1); } 2 Függvényhívás void f3(int a3) { printf(

Részletesebben

17. A 2-3 fák és B-fák. 2-3 fák

17. A 2-3 fák és B-fák. 2-3 fák 17. A 2-3 fák és B-fák 2-3 fák Fontos jelentősége, hogy belőlük fejlődtek ki a B-fák. Def.: Minden belső csúcsnak 2 vagy 3 gyermeke van. A levelek egy szinten helyezkednek el. Az adatrekordok/kulcsok csak

Részletesebben

9. előadás. A táblázat. A táblázatról általában, soros, önátrendező, rendezett és kulcstranszformációs táblázat

9. előadás. A táblázat. A táblázatról általában, soros, önátrendező, rendezett és kulcstranszformációs táblázat . előadás ról általában, soros, önátrendező, rendezett és kulcstranszformációs Adatszerkezetek és algoritmusok előadás 0. április. ról általában,, és Debreceni Egyetem Informatikai Kar. Általános tudnivalók

Részletesebben

Adatszerkezetek Tömb, sor, verem. Dr. Iványi Péter

Adatszerkezetek Tömb, sor, verem. Dr. Iványi Péter Adatszerkezetek Tömb, sor, verem Dr. Iványi Péter 1 Adat Adat minden, amit a számítógépünkben tárolunk és a külvilágból jön Az adatnak két fontos tulajdonsága van: Értéke Típusa 2 Adat típusa Az adatot

Részletesebben

Buborékrendezés: Hanoi Tornyai: Asszimptótikus fv.ek: Láncolt ábrázolás: For ciklussal:

Buborékrendezés: Hanoi Tornyai: Asszimptótikus fv.ek: Láncolt ábrázolás: For ciklussal: Buborékrendezés: For ciklussal: Hanoi Tornyai: Asszimptótikus fv.ek: Láncolt ábr.: ha p egy mutató típusú változó akkor p^ az általa mutatott adatelem, p^.adat;p^.mut. A semmibe mutató ponter a NIL.Szabad

Részletesebben

5. SOR. Üres: S Sorba: S E S Sorból: S S E Első: S E

5. SOR. Üres: S Sorba: S E S Sorból: S S E Első: S E 5. SOR A sor adatszerkezet is ismerős a mindennapokból, például a várakozási sornak számos előfordulásával van dolgunk, akár emberekről akár tárgyakról (pl. munkadarabokról) legyen szó. A sor adattípus

Részletesebben

file:///d:/okt/ad/jegyzet/ad1/b+fa.html

file:///d:/okt/ad/jegyzet/ad1/b+fa.html 1 / 5 2016. 11. 30. 12:58 B+ fák CSci 340: Database & Web systems Home Syllabus Readings Assignments Tests Links Computer Science Hendrix College Az alábbiakban Dr. Carl Burch B+-trees című Internetes

Részletesebben

Amortizációs költségelemzés

Amortizációs költségelemzés Amortizációs költségelemzés Amennyiben műveleteknek egy M 1,...,M m sorozatának a futási idejét akarjuk meghatározni, akkor egy lehetőség, hogy külön-külön minden egyes művelet futási idejét kifejezzük

Részletesebben

Miről lesz ma szó? A PROGAMOZÁS ALAPJAI 1. Dinamikus adatszerkezetek. Dinamikus adatszerkezetek. Önhivatkozó struktúrák. Önhivatkozó struktúrák

Miről lesz ma szó? A PROGAMOZÁS ALAPJAI 1. Dinamikus adatszerkezetek. Dinamikus adatszerkezetek. Önhivatkozó struktúrák. Önhivatkozó struktúrák 2012. március 27. A PROGAMOZÁS ALAPJAI 1 Vitéz András egyetemi adjunktus BME Híradástechnikai Tanszék vitez@hit.bme.hu Miről lesz ma szó? Dinamikus adatszerkezetek Önhivatkozó struktúra keresés, beszúrás,

Részletesebben

15. A VERSENYRENDEZÉS

15. A VERSENYRENDEZÉS 15. A VERSENYRENDEZÉS A versenyrendezés (tournament sort) a maximum-kiválasztó rendezések közé tartozik, ugyanis az elemek közül újra és újra kiválasztja (eltávolítja és kiírja) a legnagyobbat. Az eljárás

Részletesebben

Táblázatok fontosabb műveletei 1

Táblázatok fontosabb műveletei 1 Táblázatok fontosabb műveletei 1 - - Soros táblázat procedure BESZÚR1(TÁBLA, újelem) - - beszúrás soros táblázatba - - a táblázatot egy rekordokat tartalmazó dinamikus vektorral reprezentáljuk - - a rekordok

Részletesebben

Programozás alapjai C nyelv 7. gyakorlat. Függvények. Függvények(2)

Programozás alapjai C nyelv 7. gyakorlat. Függvények. Függvények(2) Programozás alapjai C nyelv 7. gyakorlat Szeberényi Imre BME IIT Programozás alapjai I. (C nyelv, gyakorlat) BME-IIT Sz.I. 2005.11.05. -1- Függvények C program egymás mellé rendelt függvényekből

Részletesebben

Függvények. Programozás alapjai C nyelv 7. gyakorlat. LNKO függvény. Függvények(2) LNKO függvény (2) LNKO függvény (3)

Függvények. Programozás alapjai C nyelv 7. gyakorlat. LNKO függvény. Függvények(2) LNKO függvény (2) LNKO függvény (3) Programozás alapjai C nyelv 7. gyakorlat Szeberényi Imre BME IIT Függvények C program egymás mellé rendelt függvényekből áll. A függvény (alprogram) jó absztrakciós eszköz a programok

Részletesebben

Kupac adatszerkezet. A[i] bal fia A[2i] A[i] jobb fia A[2i + 1]

Kupac adatszerkezet. A[i] bal fia A[2i] A[i] jobb fia A[2i + 1] Kupac adatszerkezet A bináris kupac egy majdnem teljes bináris fa, amely minden szintjén teljesen kitöltött kivéve a legalacsonyabb szintet, ahol balról jobbra haladva egy adott csúcsig vannak elemek.

Részletesebben

az Excel for Windows programban

az Excel for Windows programban az Excel for Windows táblázatkezelőblázatkezel programban Mit nevezünk nk képletnek? A táblt blázatkezelő programok nagy előnye, hogy meggyorsítj tják és könnyebbé teszik a felhasználó számára a számítási

Részletesebben

Programozás I. - 11. gyakorlat

Programozás I. - 11. gyakorlat Programozás I. - 11. gyakorlat Struktúrák, gyakorlás Tar Péter 1 Pannon Egyetem M szaki Informatikai Kar Rendszer- és Számítástudományi Tanszék Utolsó frissítés: November 16, 2009 1 tar@dcs.vein.hu Tar

Részletesebben

A programozás alapjai 1 Rekurzió

A programozás alapjai 1 Rekurzió A programozás alapjai Rekurzió. előadás Híradástechnikai Tanszék - preorder (gyökér bal gyerek jobb gyerek) mentés - visszaállítás - inorder (bal gyerek gyökér jobb gyerek) rendezés 4 5 6 4 6 7 5 7 - posztorder

Részletesebben

Rendezések. Összehasonlító rendezések

Rendezések. Összehasonlító rendezések Rendezések Összehasonlító rendezések Remdezés - Alapfeladat: Egy A nevű N elemű sorozat elemeinek nagyság szerinti sorrendbe rendezése - Feltételezzük: o A sorozat elemei olyanok, amelyekre a >, relációk

Részletesebben

Gyakorló feladatok ZH-ra

Gyakorló feladatok ZH-ra Algoritmuselmélet Schlotter Ildi 2011. április 6. ildi@cs.bme.hu Gyakorló feladatok ZH-ra Nagyságrendek 1. Egy algoritmusról tudjuk, hogy a lépésszáma O(n 2 ). Lehetséges-e, hogy (a) minden páros n-re

Részletesebben

Algoritmuselmélet. 2-3 fák. Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem. 8.

Algoritmuselmélet. 2-3 fák. Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem. 8. Algoritmuselmélet 2-3 fák Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem 8. előadás Katona Gyula Y. (BME SZIT) Algoritmuselmélet 8. előadás

Részletesebben

6. gyakorlat Egydimenziós numerikus tömbök kezelése, tömbi algoritmusok

6. gyakorlat Egydimenziós numerikus tömbök kezelése, tömbi algoritmusok 6. gyakorlat Egydimenziós numerikus tömbök kezelése, tömbi algoritmusok 1. feladat: Az EURO árfolyamát egy negyedéven keresztül hetente nyilvántartjuk (HUF / EUR). Írjon C programokat az alábbi kérdések

Részletesebben

C programozási nyelv Pointerek, tömbök, pointer aritmetika

C programozási nyelv Pointerek, tömbök, pointer aritmetika C programozási nyelv Pointerek, tömbök, pointer aritmetika Dr. Schuster György 2011. június 16. C programozási nyelv Pointerek, tömbök, pointer aritmetika 2011. június 16. 1 / 15 Pointerek (mutatók) Pointerek

Részletesebben

Láncolt Listák. Adat1 Adat2 Adat3 ø. Adat1 Adat2 ø Adat3

Láncolt Listák. Adat1 Adat2 Adat3 ø. Adat1 Adat2 ø Adat3 Láncolt Listák Adatszerkezetek Adatszerkezet: Az adatelemek egy olyan véges halmaza, amelyben az adatelemek között szerkezeti összefüggések vannak Megvalósítások: - Tömb, Láncolt lista, Fa, Kupac, Gráf,

Részletesebben

Rekord adattípus. Egymásba ágyazott rekordok. With utasítás. Változó rekord. Rekord konstans

Rekord adattípus. Egymásba ágyazott rekordok. With utasítás. Változó rekord. Rekord konstans Témakörök: k: Rekord adattípus Egymásba ágyazott rekordok With utasítás Változó rekord Rekord konstans 1. A rekord adattípus Sokszor találkozunk lkozunk olyan feladattal, melyben összetartozó adatokat,

Részletesebben

Algoritmusok és adatszerkezetek 2.

Algoritmusok és adatszerkezetek 2. Algoritmusok és adatszerkezetek 2. Varga Balázs gyakorlata alapján Készítette: Nagy Krisztián 1. gyakorlat Nyílt címzéses hash-elés A nyílt címzésű hash táblákban a láncolással ellentétben egy indexen

Részletesebben

end function Az A vektorban elõforduló legnagyobb és legkisebb értékek indexeinek különbségét.. (1.5 pont) Ha üres a vektor, akkor 0-t..

end function Az A vektorban elõforduló legnagyobb és legkisebb értékek indexeinek különbségét.. (1.5 pont) Ha üres a vektor, akkor 0-t.. A Név: l 2014.04.09 Neptun kód: Gyakorlat vezető: HG BP MN l 1. Adott egy (12 nem nulla értékû elemmel rendelkezõ) 6x7 méretû ritka mátrix hiányos 4+2 soros reprezentációja. SOR: 1 1 2 2 2 3 3 4 4 5 6

Részletesebben

6. előadás. Kiegyensúlyozottság, AVL-fa, piros-fekete fa. Adatszerkezetek és algoritmusok előadás március 6.

6. előadás. Kiegyensúlyozottság, AVL-fa, piros-fekete fa. Adatszerkezetek és algoritmusok előadás március 6. 6. előadás, AVL-fa, piros-fekete fa Adatszerkezetek és algoritmusok előadás 2018. március 6.,, és Debreceni Egyetem Informatikai Kar 6.1 Általános tudnivalók Ajánlott irodalom: Thomas H. Cormen, Charles

Részletesebben

7. BINÁRIS FÁK 7.1. A bináris fa absztrakt adattípus 7.2. A bináris fa absztrakt adatszerkezet

7. BINÁRIS FÁK 7.1. A bináris fa absztrakt adattípus 7.2. A bináris fa absztrakt adatszerkezet 7. BINÁRIS FÁK Az előző fejezetekben már találkoztunk bináris fákkal. Ezt a központi fontosságú adatszerkezetet most vezetjük be a saját helyén és az általános fák szerepét szűkítve, csak a bináris fát

Részletesebben

B-fa. Felépítés, alapvető műveletek. Programozás II. előadás. Szénási Sándor.

B-fa. Felépítés, alapvető műveletek. Programozás II. előadás.  Szénási Sándor. B-fa Felépítés, alapvető műveletek előadás http://nik.uni-obuda.hu/prog2 Szénási Sándor szenasi.sandor@nik.uni-obuda.hu Óbudai Egyetem,Neumann János Informatikai Kar B-fa Felépítése Beszúrás művelete Törlés

Részletesebben

10. tétel. Adatszerkezetek és algoritmusok vizsga Frissült: 2013. január 28.

10. tétel. Adatszerkezetek és algoritmusok vizsga Frissült: 2013. január 28. 10. tétel Adatszerkezetek és algoritmusok vizsga Frissült: 2013. január 28. 2-3 fák Hatékony keresőfa-konstrukció. Ez is fa, de a binárisnál annyival bonyolultabb hogy egy nem-levél csúcsnak 2 vagy 3 fia

Részletesebben

Tartalomjegyzék. Köszönetnyilvánítás. 1. Az alapok 1

Tartalomjegyzék. Köszönetnyilvánítás. 1. Az alapok 1 Köszönetnyilvánítás Bevezetés Kinek szól a könyv? Elvárt előismeretek A könyv témája A könyv használata A megközelítés alapelvei Törekedjünk az egyszerűségre! Ne optimalizáljunk előre! Felhasználói interfészek

Részletesebben

8. gyakorlat Pointerek, dinamikus memóriakezelés

8. gyakorlat Pointerek, dinamikus memóriakezelés 8. gyakorlat Pointerek, dinamikus memóriakezelés Házi ellenőrzés Egy számtani sorozat első két tagja A1 és A2. Számítsa ki a sorozat N- dik tagját! (f0051) Egy mértani sorozat első két tagja A1 és A2.

Részletesebben

2. Milyen értéket határoz meg az alábbi algoritmus, ha A egy vektor?. (2 pont)

2. Milyen értéket határoz meg az alábbi algoritmus, ha A egy vektor?. (2 pont) A Név: l 2017.04.06 Neptun kód: Gyakorlat vezet : HG BP l 1. Az A vektor tartalmát az alábbi KUPACOL eljárással rendezzük át maximum kupaccá. A={28, 87, 96, 65, 55, 32, 51, 69} Mi lesz az értéke az A vektor

Részletesebben

7 7, ,22 13,22 13, ,28

7 7, ,22 13,22 13, ,28 Általános keresőfák 7 7,13 13 13 7 20 7 20,22 13,22 13,22 7 20 25 7 20 25,28 Általános keresőfa Az általános keresőfa olyan absztrakt adatszerkezet, amely fa és minden cellájában nem csak egy (adat), hanem

Részletesebben

Pásztor Attila. Algoritmizálás és programozás tankönyv az emeltszintű érettségihez

Pásztor Attila. Algoritmizálás és programozás tankönyv az emeltszintű érettségihez Pásztor Attila Algoritmizálás és programozás tankönyv az emeltszintű érettségihez 3. ADATTÍPUSOK...26 3.1. AZ ADATOK LEGFONTOSABB JELLEMZŐI:...26 3.2. ELEMI ADATTÍPUSOK...27 3.3. ÖSSZETETT ADATTÍPUSOK...28

Részletesebben

10. gyakorlat Struktúrák, uniók, típusdefiníciók

10. gyakorlat Struktúrák, uniók, típusdefiníciók 10. gyakorlat Struktúrák, uniók, típusdefiníciók Házi - (f0218) Olvass be 5 darab maximum 99 karakter hosszú szót úgy, hogy mindegyiknek pontosan annyi helyet foglalsz, amennyi kell! A sztringeket írasd

Részletesebben

Algoritmuselmélet 2. előadás

Algoritmuselmélet 2. előadás Algoritmuselmélet 2. előadás Katona Gyula Y. Budapesti Műszaki és Gazdaságtudományi Egyetem Számítástudományi Tsz. I. B. 137/b kiskat@cs.bme.hu 2002 Február 12. ALGORITMUSELMÉLET 2. ELŐADÁS 1 Buborék-rendezés

Részletesebben

A C programozási nyelv V. Struktúra Dinamikus memóriakezelés

A C programozási nyelv V. Struktúra Dinamikus memóriakezelés A C programozási nyelv V. Struktúra Dinamikus memóriakezelés Miskolci Egyetem Általános Informatikai Tanszék A C programozási nyelv V. (Struktúra, memóriakezelés) CBEV5 / 1 A struktúra deklarációja 1.

Részletesebben

Például számokból álló, egyszeresen láncolt lista felépítéséhez az alábbi struktúra definíciót használhatjuk:

Például számokból álló, egyszeresen láncolt lista felépítéséhez az alábbi struktúra definíciót használhatjuk: 8. előadás Ismétlés Dinamikus adatszerkezetek: listák (egyszeresen vagy többszörösen láncolt), fák. Kétfelé ágazó fa: bináris fa Dinamikus adatszerkezetek - önhivatkozó adatstruktúrák: adatok és reájuk

Részletesebben

Programozas 1. Strukturak, mutatok

Programozas 1. Strukturak, mutatok Programozas 1 Strukturak, mutatok Strukturak Tömb: több egyforma típusú változó együttese Struktúra: több különböző típusú de logikailag egybetartozó változó együttese, amelyet az egyszerű kezelhetőség

Részletesebben

Információs Technológia

Információs Technológia Információs Technológia Sor és verem adatszerkezet Fodor Attila Pannon Egyetem Műszaki Informatikai Kar Villamosmérnöki és Információs Rendszerek Tanszék foa@almos.vein.hu 2009. november 19. Alapötlet

Részletesebben

Adatszerkezetek I. 8. előadás. (Horváth Gyula anyagai felhasználásával)

Adatszerkezetek I. 8. előadás. (Horváth Gyula anyagai felhasználásával) Adatszerkezetek I. 8. előadás (Horváth Gyula anyagai felhasználásával) Kereső- és rendezőfák Közös tulajdonságok: A gyökérelem (vagy kulcsértéke) nagyobb vagy egyenlő minden tőle balra levő elemnél. A

Részletesebben

Kulcs transzformációs táblázat

Kulcs transzformációs táblázat Kulcs transzformációs táblázat Ennek a táblázatnak az ábrázolása folytonos. Soros táblázat esetén egy elem helyét a beszúrás időpontja, önátrendező táblázatnál a feldolgozás gyakorisága, rendezett táblázatnál

Részletesebben

tétel: különböző típusú adatokat csoportosít, ezeket egyetlen adatként kezeli, de hozzáférhetünk az elemeihez is

tétel: különböző típusú adatokat csoportosít, ezeket egyetlen adatként kezeli, de hozzáférhetünk az elemeihez is A tétel (record) tétel: különböző típusú adatokat csoportosít, ezeket egyetlen adatként kezeli, de hozzáférhetünk az elemeihez is A tétel elemei mezők. Például tétel: személy elemei: név, lakcím, születési

Részletesebben

Láncolt lista. az itt adott nevet csak a struct deklaráción belül használjuk

Láncolt lista. az itt adott nevet csak a struct deklaráción belül használjuk Láncolt lista int szam char szoveg[10] következő elemre mutató pointer int szam char szoveg[10] következő elemre mutató pointer elem elem elem int szam char szoveg[10] következő elemre mutató pointer A

Részletesebben

29. Visszalépéses keresés 1.

29. Visszalépéses keresés 1. 29. Visszalépéses keresés 1. A visszalépéses keresés algoritmusa Az eddig megismert algoritmusok bizonyos értelemben nyílegyenesen haladtak elôre. Tudtuk, hogy merre kell mennünk, és minden egyes lépéssel

Részletesebben

Absztrakt adatstruktúrák A bináris fák

Absztrakt adatstruktúrák A bináris fák ciós lámpa a legnagyobb élettartamú és a legjobb hatásfokú fényforrásnak tekinthető, nyugodtan mondhatjuk, hogy a jövő fényforrása. Ezt bizonyítja az a tény, hogy ezen a területen a kutatások és a bejelentett

Részletesebben

Hierarchikus adatszerkezetek

Hierarchikus adatszerkezetek Hierarchikus adatszerkezetek A szekveniális adatszerkezetek általánosítása. Minden adatelemnek pontosan 1 megelőzője van, de akárhány rákövetkezője lehet, kivéve egy speciális elemet. Fa (tree) Hierarchikus

Részletesebben

file:///d:/apa/okt/ad/jegyzet/ad1/b+fa.html

file:///d:/apa/okt/ad/jegyzet/ad1/b+fa.html 1 / 6 2018.01.20. 23:23 B+ fák CSci 340: Database & Web systems Home Syllabus Readings Assignments Tests Links Computer Science Hendrix College Az alábbiakban Dr. Carl Burch B+-trees című Internetes tananyagának

Részletesebben

Felvételi vizsga mintatételsor Informatika írásbeli vizsga

Felvételi vizsga mintatételsor Informatika írásbeli vizsga BABEȘ BOLYAI TUDOMÁNYEGYETEM MATEMATIKA ÉS INFORMATIKA KAR A. tételsor (30 pont) Felvételi vizsga mintatételsor Informatika írásbeli vizsga 1. (5p) Egy x biten tárolt egész adattípus (x szigorúan pozitív

Részletesebben

Ugrólisták. RSL Insert Example. insert(22) with 3 flips. Runtime?

Ugrólisták. RSL Insert Example. insert(22) with 3 flips. Runtime? Ugrólisták Ugrólisták Ugrólisták Ugrólisták RSL Insert Example insert(22) with 3 flips 13 8 29 20 10 23 19 11 2 13 22 8 29 20 10 23 19 11 2 Runtime? Ugrólisták Empirical analysis http://www.inf.u-szeged.hu/~tnemeth/alga2/eloadasok/skiplists.pdf

Részletesebben

Adatbázismodellek. 1. ábra Hierarchikus modell

Adatbázismodellek. 1. ábra Hierarchikus modell Eddig az adatbázisokkal általános szempontból foglalkoztunk: mire valók, milyen elemekből épülnek fel. Ennek során tisztáztuk, hogy létezik az adatbázis fogalmi modellje (adatbázisterv), amely az egyedek,

Részletesebben

LINEÁRIS PROGRAMOZÁSI FELADATOK MEGOLDÁSA SZIMPLEX MÓDSZERREL

LINEÁRIS PROGRAMOZÁSI FELADATOK MEGOLDÁSA SZIMPLEX MÓDSZERREL LINEÁRIS PROGRAMOZÁSI FELADATOK MEGOLDÁSA SZIMPLEX MÓDSZERREL x 1-2x 2 6 -x 1-3x 3 = -7 x 1 - x 2-3x 3-2 3x 1-2x 2-2x 3 4 4x 1-2x 2 + x 3 max Alapfogalmak: feltételrendszer (narancs színnel jelölve), célfüggvény

Részletesebben

Haladó rendezések. PPT 2007/2008 tavasz.

Haladó rendezések. PPT 2007/2008 tavasz. Haladó rendezések szenasi.sandor@nik.bmf.hu PPT 2007/2008 tavasz http://nik.bmf.hu/ppt 1 Témakörök Alapvető összehasonlító rendezések Shell rendezés Kupacrendezés Leszámláló rendezés Radix rendezés Edényrendezés

Részletesebben

Miről lesz ma szó? A PROGAMOZÁS ALAPJAI 1. Dinamikus változók. Dinamikus változók. Dinamikus változók. Dinamikus változók. 7.

Miről lesz ma szó? A PROGAMOZÁS ALAPJAI 1. Dinamikus változók. Dinamikus változók. Dinamikus változók. Dinamikus változók. 7. Miről lesz ma szó? A PROGAMOZÁS ALAPJAI 1 Vitéz András egyetemi adjunktus BME Híradástechnikai Tanszék vitez@hit.bme.hu Dinamikus memóriakezelés Dinamikus tömbök Dinamikus stringek Program kapcsolata a

Részletesebben

Alkalmazott modul: Programozás

Alkalmazott modul: Programozás Eötvös Loránd Tudományegyetem Informatikai Kar Alkalmazott modul: Programozás Feladatgyűjtemény Összeállította: Giachetta Roberto groberto@inf.elte.hu http://people.inf.elte.hu/groberto Frissítve: 2015.

Részletesebben

Láncolt listák. PPT 2007/2008 tavasz.

Láncolt listák. PPT 2007/2008 tavasz. Láncolt listák szenasi.sandor@nik.bmf.hu PPT 2007/2008 tavasz http://nik.bmf.hu/ppt 1 Témakörök Láncolt listák elvi felépítése Egyirányú egyszerű láncolt lista Egyirányú rendezett láncolt lista Láncolt

Részletesebben

Adatszerkezetek és algoritmusok

Adatszerkezetek és algoritmusok Adatszerkezetek és algoritmusok Jegyzet dr. Juhász István előadása alapján Készítette Csordás Annamária és Mohai Gábor A valós világban rendszerekről beszélünk. A dolgok összetevői egymással kölcsönhatásban

Részletesebben

Fák 2009.04.06. Témakörök. Fa definíciója. Rekurzív típusok, fa adatszerkezet Bináris keresőfa, bejárások Bináris keresőfa, módosítás B-fa

Fák 2009.04.06. Témakörök. Fa definíciója. Rekurzív típusok, fa adatszerkezet Bináris keresőfa, bejárások Bináris keresőfa, módosítás B-fa Fák szenasi.sandor@nik.bmf.hu PPT 2007/2008 tavasz http://nik.bmf.hu/ppt 1 Rekurzív típusok, fa adatszerkezet Bináris keresőfa, bejárások Bináris keresőfa, módosítás B-fa Témakörök 2 Fa (Tree): csomópontok

Részletesebben

Felvételi tematika INFORMATIKA

Felvételi tematika INFORMATIKA Felvételi tematika INFORMATIKA 2016 FEJEZETEK 1. Természetes számok feldolgozása számjegyenként. 2. Számsorozatok feldolgozása elemenként. Egydimenziós tömbök. 3. Mátrixok feldolgozása elemenként/soronként/oszloponként.

Részletesebben

Programozás 5. Dr. Iványi Péter

Programozás 5. Dr. Iványi Péter Programozás 5. Dr. Iványi Péter 1 Struktúra Véges számú különböző típusú, logikailag összetartozó változó együttese, amelyeket az egyszerű kezelhetőség érdekében gyűjtünk össze. Rekord-nak felel meg struct

Részletesebben

Mutatók és mutató-aritmetika C-ben március 19.

Mutatók és mutató-aritmetika C-ben március 19. Mutatók és mutató-aritmetika C-ben 2018 március 19 Memória a Neumann-architektúrában Neumann-architektúra: a memória egységes a címzéshez a természetes számokat használjuk Ugyanabban a memóriában van:

Részletesebben

Adatbázis rendszerek Gy: Algoritmusok C-ben

Adatbázis rendszerek Gy: Algoritmusok C-ben Adatbázis rendszerek 1. 1. Gy: Algoritmusok C-ben 53/1 B ITv: MAN 2015.09.08 Alapalgoritmusok Összegzés Megszámlálás Kiválasztás Kiválasztásos rendezés Összefésülés Szétválogatás Gyorsrendezés 53/2 Összegzés

Részletesebben

Térinformatikai adatszerkezetek

Térinformatikai adatszerkezetek Térinformatikai adatszerkezetek 1. Pont Egy többdimenziós pont reprezentálható sokféle módon. A választott reprezentáció függ attól, hogy milyen alkalmazás során akarjuk használni, és milyen típusú műveleteket

Részletesebben

Fájlszervezés. Adatbázisok tervezése, megvalósítása és menedzselése

Fájlszervezés. Adatbázisok tervezése, megvalósítása és menedzselése Fájlszervezés Adatbázisok tervezése, megvalósítása és menedzselése Célok: gyors lekérdezés, gyors adatmódosítás, minél kisebb tárolási terület. Kezdetek Nincs általánosan legjobb optimalizáció. Az egyik

Részletesebben

Bánsághi Anna 2014 Bánsághi Anna 1 of 68

Bánsághi Anna 2014 Bánsághi Anna 1 of 68 IMPERATÍV PROGRAMOZÁS Bánsághi Anna anna.bansaghi@mamikon.net 3. ELŐADÁS - PROGRAMOZÁSI TÉTELEK 2014 Bánsághi Anna 1 of 68 TEMATIKA I. ALAPFOGALMAK, TUDOMÁNYTÖRTÉNET II. IMPERATÍV PROGRAMOZÁS Imperatív

Részletesebben

Adatszerkezetek I. 1. előadás

Adatszerkezetek I. 1. előadás Adatszerkezetek I. 1. előadás Adatok jellemzői ismétlés 1. Azonosító Az a jelsorozat, amellyel hivatkozhatunk a tartalmára, amely által módosíthatjuk tartalmát. 2. Hozzáférési jog Adatokat módosítani,

Részletesebben

Adatbáziskezelés. Indexek, normalizálás NZS 1

Adatbáziskezelés. Indexek, normalizálás NZS 1 Adatbáziskezelés Indexek, normalizálás NZS 1 Fáljszervezés módjai Soros elérés: a rekordok a fájlban tetszőleges sorrendben, például a felvitel sorrendjében helyezkednek el. A rekord azonosítója vagyis

Részletesebben

Tömbök kezelése. Példa: Vonalkód ellenőrzőjegyének kiszámítása

Tömbök kezelése. Példa: Vonalkód ellenőrzőjegyének kiszámítása Tömbök kezelése Példa: Vonalkód ellenőrzőjegyének kiszámítása A számokkal jellemzett adatok, pl. személyi szám, adószám, taj-szám, vonalkód, bankszámlaszám esetében az elírásból származó hibát ún. ellenőrző

Részletesebben

Egyszerű programozási tételek

Egyszerű programozási tételek Egyszerű programozási tételek Sorozatszámítás tétele Például az X tömbben kövek súlyát tároljuk. Ha ki kellene számolni az összsúlyt, akkor az S = f(s, X(i)) helyére S = S + X(i) kell írni. Az f0 tartalmazza

Részletesebben