Stack vs hunnik
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. Hunnik on puudel põhinev spetsiaalne andmestruktuur, mis vastab spetsiaalsele omadusele, mida nimetatakse hunniku omaduseks. Samuti on hunnik täielik puu, mis tähendab, et puu lehtede vahel ei ole lünki, st terves puus täidetakse enne puule uue taseme lisamist iga tase ja antud taseme sõlmed täidetakse alates vasakult paremale.
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 vastavalt tõuke- ja hüpiktoimingute määratlemise viisile selge, et elemendid, mis lisati virna viimati, väljuvad virnast kõigepealt. Seetõttu peetakse virna LIFO-andmestruktuuriks.
Mis on hunnik?
Nagu varem mainitud, on hunnik täielik puu, mis rahuldab hunniku omadusi. Hunniku omadus väidab, et kui y on x-alamsõlm, siis peaks sõlme x salvestatud väärtus olema suurem või võrdne sõlme y salvestatud väärtusega (st väärtus (x) ≥ väärtus (y)). See omadus eeldab, et suurima väärtusega sõlme asetatakse alati juuri. Selle omaduse järgi ehitatud hunnikut nimetatakse max-hunnikuks. On veel üks hunniku omaduste variatsioon, mis väidab selle vastupidist. (st väärtus (x) ≤ väärtus (y)). See tähendab, et väikseima väärtusega sõlme paigutatakse alati juuri, seda nimetatakse min-hunnikuks. Hunnikutes tehakse mitmesuguseid toiminguid, näiteks minimaalse (min-hunnikutes) või maksimumi (max-hunnikutes) leidmine, minimaalse (min-hunnikutes) või maksimumi (max-hunnikutes) kustutamise, suurendamise (max -heps) või vähendav (min-hunnikutes) klahv jne.
Mis vahe on Stackil ja Hunnal??
Peamine erinevus virnade ja hunnikute vahel on see, et kui virn on lineaarne andmestruktuur, on hunnik mittelineaarne andmestruktuur. Stack on tellitud nimekiri, mis järgib LIFO atribuuti, samas kui hunnik on täielik puu, mis järgneb hunniku omadusele. Lisaks on pinu piiratud andmestruktuur, mis toetab ainult piiratud arvu toiminguid tõuke- ja hüpikmenüüna, samal ajal kui hunnik toetab mitmesuguseid toiminguid, näiteks minimaalse või maksimaalse leidmine ja kustutamine, võtme suurendamine või vähendamine ja ühendamine.