„Stack vs Heap“
„Stack“yra sutvarkytas sąrašas, kuriame sąrašo elementus galima įterpti ir ištrinti tik viename gale, vadinamame viršuje. Dėl šios priežasties kaminas yra laikomas „Last in First out“(LIFO) duomenų struktūra. Krūva yra speciali duomenų struktūra, kurios pagrindas yra medžiai ir kuri tenkina specialią savybę, vadinamą krūvos savybe. Be to, krūva yra visas medis, o tai reiškia, kad tarp medžio lapų nėra tarpų, ty pilname medyje visi lygiai užpildomi prieš pridedant naują lygį prie medžio, o tam tikro lygio mazgai užpildomi iš iš kairės į dešinę.
Kas yra „Stack“?
Kaip minėta anksčiau, „stack“yra duomenų struktūra, kurioje elementai pridedami ir pašalinami tik iš vieno galo, vadinamo viršuje. „Stacks“leidžia atlikti tik dvi pagrindines operacijas, vadinamas „push and pop“. Stūmimo operacija prideda naują elementą prie kamino viršaus. „Pop“operacija pašalina elementą iš kamino viršaus. Jei kaminas jau pilnas, kai atliekama stūmimo operacija, tai laikoma kamino perpildymu. Jei „pop“operacija atliekama jau tuščioje rietuvėje, tai laikoma stekos nepakankamu srautu. Dėl nedidelio kiekio operacijų, kurias buvo galima atlikti su kaupu, skaičius laikomas ribota duomenų struktūra. Be to, atsižvelgiant į tai, kaip apibrėžiamos „push“ir „pop“operacijos, akivaizdu, kad elementai, kurie paskutiniai buvo pridėti prie kamino, pirmiausia išeina iš kamino. Todėl kaminas laikomas LIFO duomenų struktūra.
Kas yra krūva?
Kaip minėta anksčiau, krūva yra visas medis, tenkinantis krūvos savybę. „Heap“savybė nurodo, kad jei y yra pirminis x mazgas, tada x išsaugota vertė turėtų būti didesnė arba lygi jai išsaugotai vertei (ty reikšmė (x) ≥ reikšmė (y)). Ši savybė reiškia, kad didžiausią vertę turintis mazgas visada bus dedamas į šaknį. Krūva, sukonstruota naudojant šią savybę, vadinama „max-heap“. Yra dar vienas krūvos savybės variantas, nurodantis atvirkštinę tai. (ty vertė (x) ≤ vertė (y)). Tai reiškia, kad mazgas, kurio vertė mažiausia, visada būtų dedamas į šaknį, vadinamą „min-heap“. Yra daugybė operacijų, atliekamų su kaupu, pavyzdžiui, ieškant mažiausio (min-krūvos) arba maksimalaus (maks-krūvos), ištrinant mažiausio (min-krūvos) arba maksimalaus (maks-krūvos),didėjantis (maks. kaupu) arba mažėjantis (min-krūva) klavišas ir kt.
Kuo skiriasi „Stack“ir „Heap“?
Pagrindinis skirtumas tarp krūvelių ir kaupų yra tas, kad nors krūva yra linijinė duomenų struktūra, krūva yra netiesinė duomenų struktūra. „Stack“yra sutvarkytas sąrašas, kuris seka LIFO ypatybę, o krūva yra visas medis, kuris seka nuosavybės savybę. Be to, „stack“yra ribota duomenų struktūra, palaikanti tik ribotą operacijų skaičių kaip „push and pop“, o kaupas palaiko platų operacijų spektrą, pavyzdžiui, surasti ir ištrinti minimumą ar maksimumą, padidinti ar sumažinti raktą ir sujungti.