Stack vs Queue
Stack on järjestatud loend, kus loendiüksuste sisestamist ja kustutamist saab teha ainult ühes otsas, mida nimetatakse ülaosaks. Sel põhjusel peetakse virna viimaseks esimeseks (LIFO) andmestruktuuriks. Järjekord on ka järjestatud loend, kus loendielementide sisestamine toimub ühes otsas, mida nimetatakse tagumiseks, ja üksuste kustutamine toimub teises otsas, mida nimetatakse esiosaks. See sisestamis- ja kustutamismehhanism muudab järjekorra FIFO-st andmeestruktuuriks.
Mis on Stack?
Nagu varem mainitud, on pinu andmestruktuur, milles elemendid lisatakse ja eemaldatakse ainult ühest otsast, mida nimetatakse ülaosaks. Korstnad võimaldavad ainult kahte põhifunktsiooni, mida nimetatakse push ja pop. Lükkamine lisab virna ülaossa uue elemendi. Pop-toiming eemaldab elemendi virna ülaosast. Kui virn on juba täis, loetakse tõukamistoimingu ajal virna ületäitumiseks. Kui pop-toiming viiakse läbi juba tühjal virnal, loetakse seda virna alavooluks. Kuna virnaga saab teha vähe toiminguid, peetakse seda piiratud andmestruktuuriks. Lisaks on push- ja pop-toimingute määratlemise viisi järgi selge, et elemendid, mis lisati virna viimati, väljuvad virnast kõigepealt. Seetõttu peetakse virna LIFO-andmestruktuuriks.
Mis on järjekord?
Järjekorras lisatakse elemendid järjekorra tagumisest osast ja eemaldatakse järjekorra esiosast. Kuna esimesena lisatud elemendid eemaldatakse kõigepealt järjekorrast, säilitab see FIFO järjekorra. Elementide lisamise ja eemaldamise järjekorra tõttu esindab järjekord kassaliini ideed. Üldised toimingud, mida järjekord toetab, on järjekorra- ja järjekorratoimingud. Järjekorra toiming lisab elemendi järjekorra taha, samal ajal kui järjekorra toiming eemaldab elemendi järjekorra esiosast. Üldiselt pole järjekordadel lisaks mälupiirangutele piirang elementide arvule, mida saab järjekorda lisada.
Mis vahe on Stackil ja Queue'il??
Ehkki nii korstnad kui ka järjekorrad on omamoodi järjestatud loendid, on neil siiski olulisi erinevusi. Virnades saab üksuste lisamist või kustutamist teha ainult ühest otsast, mida nimetatakse ülaosast, järjekordade lisamisel aga üksuste lisamiseks ühest otsast, mida nimetatakse tagumiseks, ja üksuste kustutamiseks teisest otsast, mida nimetatakse eest. Virnas eemaldatakse kõigepealt virna lisatud üksused. Seetõttu peetakse virna LIFO-andmestruktuuriks. Järjekordades eemaldatakse esimesena lisatud üksused esimesena järjekorrast. Seetõttu peetakse järjekorda FIFO andmestruktuuriks.
Seotud link:
Erinevus virna ja hunniku vahel