Stack pinu magasin Risto Heinsar Ott Madis Ozolit

  • Slides: 9
Download presentation
Stack (pinu, magasin) Risto Heinsar & Ott Madis Ozolit

Stack (pinu, magasin) Risto Heinsar & Ott Madis Ozolit

LIFO algoritm 2013 2

LIFO algoritm 2013 2

Stacki olemus • Stacki saab lisada elemente kõige peale (push funktsioon) ja eemaldada elemente

Stacki olemus • Stacki saab lisada elemente kõige peale (push funktsioon) ja eemaldada elemente kõige pealt (pop funktsioon). • Stacki lihtsus võimaldab kiire opereerimise, kuid andmete ligipääs on piiratud. • Rakendused: Hanoi torn, funktsioonide stack (call stack), arvusüsteemide teisendused, sorteerimine jt 2013 3

Stacki probleemid • Alumistele elementidele ligipääsu pole, kuniks midagi asub selle kohal • Stack

Stacki probleemid • Alumistele elementidele ligipääsu pole, kuniks midagi asub selle kohal • Stack overflow – stacki ületäitumine (pushimine, kui see on täis). • Stack underflow – stackist elemendi pop’imine kui see on tühi. 2013 4

Stack operatsioonid • http: //bit. ly/stack_naide • push() – elemendi lisamine stacki • pop()

Stack operatsioonid • http: //bit. ly/stack_naide • push() – elemendi lisamine stacki • pop() – elemendi eemaldamine stackist ning selle tagastamine • Lisaks: • create() – stackile mälu andmine • destroy() – stacki mälust eemaldamine • top() – viimase lisatud elemendi „piilumine“ 2013 5

Stacki realisatsioon • Massiivi põhine 23 323 423 11 43 • Linked list põhine

Stacki realisatsioon • Massiivi põhine 23 323 423 11 43 • Linked list põhine 23 2013 XXX 323 XXX 423 XXXX 11 XXXXXXX 43 6

Stacki realisatsioon • Massiivi põhine #define STACKSIZE 10 typedef struct { size_t size; int

Stacki realisatsioon • Massiivi põhine #define STACKSIZE 10 typedef struct { size_t size; int items[STACKSIZE]; } STACK; • Linked list põhine typedef struct stack. Element { int num; struct stack. Element *p. Next; } STACK; 2013 7

Järgmised praktikumid: • 9. õppenädalal tunni toimumine selgitamisel. Grupivanem saadab teisipäeval kirja meile ja

Järgmised praktikumid: • 9. õppenädalal tunni toimumine selgitamisel. Grupivanem saadab teisipäeval kirja meile ja küsib, kas tund toimub!!! • 10. õppenädalal toimub tund uues majas Akadeemia tee 15 a. Ruumi nr: XIV-502 2013 8

Tunnitöö • Realiseeri push(), pop(), display() funktsioonid. push() – lisab elemendi pop() – eemaldab

Tunnitöö • Realiseeri push(), pop(), display() funktsioonid. push() – lisab elemendi pop() – eemaldab ja kuvab elemendi display() - väljastab kõik stacki elemendid (ja tühjendab stacki selle käigus) • Lisage menüü loogika, mis lubab kasutaja poolt sisestusega kas stacki push/pop/display'da. • Overflow/Underflow kontroll! 2013 9