A verem. A verem (stack) homogén adatelemek olyan sorozata, amelyen két művelet értelmezett: –Új elem elhelyezése a verem tetejére (push) –Elem kivétele.

Slides:



Advertisements
Hasonló előadás
Sor láncolt ábrázolással
Advertisements

Összetett adattípusok 8/b tétel
Matematika és Tánc Felkészítő tanár: Komáromi Annamária
Kifejezések, operandusok, operátorok
Adatszerkezetek Az adatokat két fő csoportra oszthatjuk: egyszerű és összetett adatok.  Az egyszerű adatot egy érték jellemez, tovább nem bontható. (szám,
Számítógépek felépítése 3. előadás CPU, utasítás ciklus, címzés
Algebrai specifikációk Szlávi Péter ELTE IK Média- és Oktatásinformatikai Tanszék
Rekurzió (Horváth Gyula és Szlávi Péter előadásai felhasználásával)
Copyright, 2009 © Szlávi Péter A kupac és a prioritási sor típuskonstrukciók Szlávi Péter ELTE IK Média- és Oktatásinformatikai Tanszék
4. Helyes zárójelezés algoritmusa
Minimális költségű feszítőfák
4. előadás (2005. március 8.) Pointerek Pointer aritmetika
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás II. 6. Gyakorlat const, static, dinamikus 2D.
Mutatók, tömbök, függvények
A verem működése fpga-n
Gombkötő Attila Lineáris egyenlet.
3. LOGIKAI ADATSZERKEZETEK
Készítette: Pető László
Miskolci Egyetem Informatikai Intézet Általános Informatikai Tanszé k Pance Miklós Adatstruktúrák, algoritmusok előadásvázlat Miskolc, 2004 Technikai közreműködő:
Reprezentációs függvény. Adva egy adattípus absztrakt és konkrét specifikációja: d a = ( A, F, E a ); d c = ( C, G, E c ); A = {A 0,..., A n };C = {C 0,...,
16. Verem műveletei Kaszab Gábor.
C++ Alapok, első óra Elemi típusok Vezérlési szerkezetek
Copyright, 1999 © Szlávi Péter Verem típuskonstrukció Szlávi Péter ELTE IK Média- és Oktatásinformatikai Tanszék
A digitális számítás elmélete
Ficsor Lajos Template-ek CPP8/ 1 Template-ek. Ficsor Lajos Template-ek CPP8/ 2 A template fogalma Kiindulási probléma: tetszőleges típusokon kellene ugyanolyan.
Operációs rendszerek gyakorlat 9. Gyakorlat Vakulya Gergely.
Tömbök Csernoch Mária.
Jelentések Tábla vagy lekérdezés nyomtatásban alkalmas megjelenítése.
Ismétlés.
Az algoritmusok áttekinthető formában történő leírására szolgáló eszközök Páll Boglárka.
Listák, Vermek és Várakozási Sorok. Vermek Def: Egy sajátos lista amelyben minden beszúrási illetve törlési művelet csak a lista egyik végén történik.
Struktúra nélküli adatszerkezetek
Adatszerkezetek 1. előadás
Egyirányban láncolt lista
Tömbök és programozási tételek
Rendezések és szövegkezelő függvények
Összetett adattípusok
Adatszerkezetek és algoritmusok
Algoritmus szerkezetek
Gráf szélességi bejárása SzB(G,p). Tetszőleges gráf, melyben a p csúcsot választottam kiindulónak: A gráfnak megfelelő fa:
Visual Basic 2008 Express Edition
Nevezetes algoritmusok
A Helyes Zárójelezés Struktogramja
Copyright, 1999 © Szlávi Péter Sor típuskonstrukció Szlávi Péter ELTE IK Média- és Oktatásinformatikai Tanszék
Egyenesvonalú (lineáris) adatszerkezetek
A Mikroprocesszor Harmadik rész.
Objektum orientált programozás
Mélységi bejárás Az algoritmus elve: Egy kezdőpontból kiindulva addig megyünk egy él mentén, ameddig el nem jutunk egy olyan csúcsba, amelyből már nem.
Feladatok (értékadás)
Ciklusok 1 Számlálós (léptető) ciklus Szintaxis: for ( i=1; i
Algoritmusok és Adatszerkezetek Egy kifejezés lengyelformára hozása - bemutató.
Kiterjesztések szemantikája: Szemantikai tartomány : Adatoknak, vagy értékeknek egy nem üres halmazát szemantikai tartománynak nevezzük. Jelölése: D. Egy.
Adatszerkezetek és algoritmusok 2006/ Algoritmus Az algoritmus szó eredete a középkori arab matematikáig nyúlik vissza, egy a i.sz. IX. században.
Összeállította: Gergely János
Programtervezés, programozás I. 2.5 tömbök,stringek
Adatszerkezetek és algoritmusok 2008/ Algoritmus Az algoritmus szó eredete a középkori arab matematikáig nyúlik vissza, egy a i.sz. IX. században.
TÁMOP /1-2F Informatikai gyakorlatok 11. évfolyam Alapvető programozási tételek megvalósítása Czigléczky Gábor 2009.
„Játékos matek” – Logikai játékok
Programozás alapjai Készítette: Csiszár Nóra Anita
Dinamikus adatszerkezetek
Programozási alapok.
TÖMBÖK – péntek Jordán Sándor.
Nevezetes algoritmusok
Tömbök és programozási tételek
Algoritmusok és Adatszerkezetek I.
Dinamikus adatszerkezetek
Programozás C# -ban Elágazások.
VEREM.
Informatikai gyakorlatok 11. évfolyam
Algoritmus készítés.
Előadás másolata:

A verem

A verem (stack) homogén adatelemek olyan sorozata, amelyen két művelet értelmezett: –Új elem elhelyezése a verem tetejére (push) –Elem kivétele a verem tetejéről (pop) A legutoljára belerakott dolgot tudjuk legelőször kivenni. (LIFO)

A verem megvalósítása Megvalósításához kell: –Egy vektor az elemek tárolására –Két mutató, az egyik a verem alját, a másik a tetejét jelzi Konstans Maxelem=maximális_elemszám Típus Elemszám: tárolandó_elemek_típusa Típus Veremtípus: rekord ( Elem:tömb[1..Maxelem] Elemtípus Alja, Teteje: egész )

A verem kezelése A verem inicializálása: Alapállapotban a verem üres Eljárás Veremkezd(Verem:Veremtípus) Verem.Alja:=1 Verem.Teteje:=0 Vége A Teteje mutató jelzi, hogy a verem üres, míg az Alja mutató értéke mindig 1 marad.

A verem állapotának lekérdezése A verem üres, ha a Teteje az Alja alá mutat. Ilyenkor a Veremüres igaz értékkel tér vissza. Függvény Veremüres(Verem: Veremtípus): logikai Veremüres:=(Verem.Teteje<Verem.Alja) vége A Teteje elérte a tömbhatárt, a verem betelt. A Veremtele igaz értékkel tér vissza. Függvény Veremtele(Verem:Veremtípus):logikai Veremtele:=(Verem.Teteje=MaxElem) Vége

Új elem elhelyezése a veremben Függvény Verembe (Verem: Veremtípus; Adat: Elemtípus): logikai ha nem VeremTele(Verem) akkor Verem.Teteje:=Verem.Teteje+1 Verem.Elem[Verem.Teteje]:)=Adat Verembe:=igaz különben Verembe:=hamis hvége vége

Elem kivétele veremből Függvény Veremből(Verem:Veremtípus; Adat: Elemtípus): logikai ha nem VeremÜres(Verem) akkor Adat:=Verem.Elem[Verem.Teteje] Verem.Teteje:=Verem.Teteje-1 Veremből:=igaz különben Veremből:=hamis hvége vége

A sor

A sor homogén adatelemek olyan sorozata, amelyen két művelet értelmezett: –Új elem elhelyezése a sor végére (put) –Elem kivétele a sor elejéről (get) A sor mindazon feladatok megoldására alkalmas, amelyekre a sorban állás kifejezésére használhatjuk, vagyis ahol az adatok feldolgozása a keletkezésük sorrendjében történek.

A sor megvalósítása Megvalósításához kell: –Egy vektor az elemek tárolására –Két mutató, az egyik a sorban lévő első, a másik az utolsó elemre mutat Konstans Maxelem=maximális_elemszám Típus Elemszám: tárolandó_elemek_típusa Típus Sortípus: rekord ( Elem:tömb[1..Maxelem] Elemtípus Első, Utolsó: egész )

A sor kezelése A sor inicializálása: Alapállapotban a sor üres Eljárás Sorkezd(Sor:Sortípus) Sor.Első:=1 Sor.Utolsó:=0 Vége

A sor állapotának a lekérdezése Függvény SorÜres (Sor:Sortípus): logikai SorÜres:(=(Sor.Első>Sor.Utolsó) Vége Függvény SorTele (Sor: Sortípus): logikai SorTele:=(Sor.Utolsó=MaxElem) Vége

Új elem elhelyezése sorba Függvény Sorba(Sor:Adattípus;Adat:Elemtípus):logikai ha nem SorTele(Sor) akkor Sor.Utolsó:=Sor.Utolsó+1 Sor.Elem[Sor.Utolsó]:=Adat Sorba:=igaz különben Sorba:=hamis hvége vége

Elem kivétele sorból Függvény Sorból(Sor:Adattípus;Adat:Elemtípus):logikai ha nem SorÜres(Sor) akkor Adat:=Sor.Elem[Sor.Első] Sor.Első:=Sor.Első+1 Sorból:=igaz különben Sorból:=hamis hvége vége

Elem kivétele léptetéssel Az eddig sorkezelő algoritmusok problémái: Ha az Elem[ ] tömb utolsó helyére nem tettünk elemet, akkor további elemek elhelyezésére nincs mód, holott a tömb elején lehetnek üres (felszabadult) helyek Megoldás: Nem engedjük a sor elemeit a tömb vége felé vándorolni. Ezt úgy érhetjük el, hogy egy elem kivételekor nem az Első mutatót léptetjük tovább, hanem a sor megmaradó elemeit és az Utolsó-t vissza. Ezt egy léptető ciklussal érjük el.

Függény LéptSorból (Sor:Sortípus; Adat:Elemtípus): logikai változó i:egész ha nem SorÜres(Sor) akkor Adat:=Sor.Elem[Sor.Első] ciklus i:=Sor.Első..Sor.Utolsó-1 ismétel Sor.Elem[i]:=Sor.Elem[i+1] cvége Sor. Utolsó:=Sor.Utolsó-1 LéptSorból:=igaz különben LéptSorból:=hamis vége

Ciklus sor Az Elem [ ] tömb végéhez elérve újabb elemeket a tömb elején helyezhetünk el, feltéve, hogy ott már vannak megüresedett helyek.

Ciklikus Sor kezelése Ciklikus sor állapotának lekérdezése: Függvény CiklSorÜres(Sor: Sortípus):logikai CiklSorÜres:=(Sor.Utolsó=0) Vége

A ciklikus sor kétféle helyzetben telhet meg: Az Elem[ ] tömb első elemétől az utolsóig tart a sor A tömbön körbehalada Utolsó eléri az Első előtti helyet Ki kell zárni azt a lehetőséget mikor a sor alaphelyzetben van (Utolsó=0) Függvény CiklSorTele(Sor:Sortípus):logikai CiklSorTele:=((Sor.Első=1 és Sor.Utolsó=MaxElem) vagy (Sor.Utolsó>0 és Sor.Utolsó=Sor.Első-1)) vége

Új elem elhelyezése a ciklikus sorban A korábbi Sorba eljáráshoz képest annyival bővül, hogy megvizsgáljuk, Utolsó elérte-e az Elem [ ] tömb végét. Ha még nem,akkor egyszerűen továbbléptetjük, ha viszont elérte, akkor a tömb első elemére állítjuk vissza.

Függvény CiklSorba(Sor:Adattípus;Adat:Elemtípus):logikai ha nem CiklSorTele(Sor) akkor ha Sor,Utolsó<MaxElem akkor Sor.Utolsó:=Sor.Utolsó+1 különben Sor.Utolsó:=1 hvége Sor.Elem[Sor.Utolsó]:=Adat CiklSorba:=igaz különben CiklSorba:=hamis hvége vége

Elem kivétele a ciklikus sorból Ha a sor csak egy elemet tartalmaz (Első=Utolsó), annak kiolvasása után a sort alaphelyzetbe kell állítani. A többi esetben az Első mutatót hasonlóan léptetjük, mint a beírásnál az Utolsót: a tömbön belül a következő elemre, a tömb utolsó eleméről viszont az elsőre.

Függvény CiklSorból(Sor:Adattípus;Adat:Elemtípus):logikai ha nem CiklSorÜres(Sor) akkor Adat:=Sor.Elem[Sor.Első] ha Sor.Első:=Sor.Utolsó akkor SorKezd(Sor) különben ha Sor.Elsó<MaxElem akkor Sor.Első:=Sor.Első+1 különben Sor.Első:=1 hvége CiklSorból:=igaz különben CiklSorból:=hamis hvége vége