Virn vs järjekord
Stack on järjestatud loend, milles loendi üksuste sisestamist ja kustutamist saab teha ainult ühes otsas, mida nimetatakse ülemiseks. Sel põhjusel käsitletakse pinu kui LIFO (Last in First out) andmestruktuuri. Järjekord on ka järjestatud loend, milles loendi üksuste sisestamine toimub ühes otsas, mida nimetatakse tagumiseks, ja üksuste kustutamine toimub teises otsas, mida nimetatakse eesmiseks. See sisestamise ja kustutamise mehhanism muudab järjekorra FIFO (First in First Out) andmestruktuuriks.
Mis on Stack?
Nagu varem mainitud, on virn andmestruktuur, milles elemente lisatakse ja eemaldatakse ainult ühest otsast, mida nimetatakse ülemiseks. Virnad võimaldavad ainult kahte põhitoimingut, mida nimetatakse push ja pop. Tõukeoperatsioon lisab virna ülaossa uue elemendi. Popoperatsioon eemaldab elemendi virna ülaosast. Kui virn on juba täis, siis tõuketoimingu sooritamisel käsitletakse seda virna ülevooluna. Kui hüpikoperatsioon tehakse juba tühja virnaga, loetakse seda virna allavooluks. Kuna virnaga saab teha operatsioone, peetakse seda piiratud andmestruktuuriks. Lisaks on push- ja pop-operatsioonide defineerimisel selge, et virna viimasena lisatud elemendid väljuvad virnast esimesena. Seetõttu käsitletakse pinu LIFO andmestruktuurina.
Mis on järjekord?
Järjekorras lisatakse elemendid järjekorra tagumisest osast ja eemaldatakse järjekorra esiosast. Kuna esimesena lisatud elemendid eemaldatakse järjekorrast kõigepe alt, säilitab see FIFO järjekorra. Selle elementide lisamise ja eemaldamise järjekorra tõttu esindab järjekord kassarea ideed. Järjekorraga toetatavad üldtoimingud on järjekorra ja tühjendamise toimingud. Järjekorra toiming lisab elemendi järjekorra taha, samas kui järjekorra eemaldamise toiming eemaldab elemendi järjekorra esiosast. Üldiselt ei ole järjekordadel piiranguid järjekorda lisatavate elementide arvule peale mälupiirangute.
Mis vahe on virnal ja järjekorral?
Kuigi nii virnad kui ka järjekorrad on teatud tüüpi järjestatud loendid, on neil mõned olulised erinevused. Virnades saab üksuste lisamist või kustutamist teha ainult ühest otsast, mida nimetatakse ülemiseks, samas kui järjekordades toimub üksuste lisamine ühest otsast, mida nimetatakse tagumiseks, ja üksuste kustutamine teisest otsast, mida nimetatakse esiosaks. Virnas eemaldatakse virnast esimesena üksused, mis lisatakse virna viimasena. Seetõttu peetakse virna LIFO andmestruktuuriks. Järjekordades eemaldatakse kõigepe alt need üksused, mis lisatakse järjekorras. Seetõttu peetakse järjekorda FIFO andmestruktuuriks.
Seotud link:
Erinevus virna ja kuhja vahel