90 likes | 216 Views
Stack (pinu, magasin). LIFO algoritm. 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. Stacki kitsendused.
E N D
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.
Stacki kitsendused • Ligipääs on ainult viimati lisatud elemendile • Stackoverflow – stackiületäitumine (pushimine, kui see on täis). • Stackunderflow – stackistelemendipop’iminekui see on tühi.
Stacki kasutamise valdkondi • Hanoi torn • Sorteerimine • Funktsioonide callstack • Arvusüsteemide teisendused • Erinevad süntaksi avaldiste hindamised • Postfix • jne
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“
Stacki realisatsioon • Massiivi põhine • Linked list põhine 23 323 423 11 43 23 XXX 323 XXX 423 XXXXXXXX 11 XXXXXXX 43
Stacki realisatsioon • Massiivi põhine #define STACKSIZE 10 typedefstruct{ size_tsize; intitems[STACKSIZE]; } stack; • Linked list põhine typedefstructnode{ intnum; structnode*pNext; } stack;
Tunnitöö • Realiseeripop(), display() funktsioonid. pop() – eemaldab ja kuvab elemendi display() - väljastabkõikstackielemendid (jatühjendabstacki selle käigus) • Lisagemenüüloogika, mislubabkasutajapooltsisestusegakasstackipush/pop/display'da. • Overflow/Underflow kontroll!