Stack vs Heap
Stack yra užsakytas sąrašas, kuriame sąrašo elementus galima įterpti ir ištrinti tik viename gale, vadinamame viršuje. Dėl šios priežasties krūva laikoma paskutine iš pirmųjų (LIFO) duomenų struktūra. Krūva yra speciali duomenų struktūra, pagrįsta medžiais ir ji atitinka specialią savybę, vadinamą krūvos savybe. Be to, krūva yra išbaigtas medis, o tai reiškia, kad tarp medžio lapų nėra tarpų, ty visame medyje kiekvienas lygis yra užpildomas prieš pridedant naują medį, o nurodyto 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šutine. Rinkiniai leidžia atlikti tik dvi pagrindines operacijas, vadinamas push ir pop. Stumiama operacija prideda naują elementą kamino viršuje. Pop operacija pašalina elementą iš krūvos viršaus. Jei krūva jau pilna, kai vykdoma stumdoma operacija, ji laikoma krūvos perpildymu. Jei pop operacija atliekama ant jau tuščios krūvos, ji laikoma krūvos perpildymu. Dėl nedidelio skaičiaus operacijų, kurias būtų galima atlikti su rietuve, ji laikoma ribota duomenų struktūra. Be to, atsižvelgiant į tai, kaip apibrėžiamos „push“ ir „pop“ operacijos, akivaizdu, kad elementai, kurie paskutiniai buvo įtraukti į krūvą, pirmiausia išeina iš krūvos. Todėl krūva laikoma LIFO duomenų struktūra.
Kas yra Heap?
Kaip minėta anksčiau, krūva yra ištisas medis, tenkinantis krūvos savybes. „Heap“ savybė teigia, kad jei y yra x vaiko mazgas, tada x mazge saugoma vertė turėtų būti didesnė arba lygi y mazgelyje saugomai vertei (t. Y. Reikšmei (x) ≥ reikšmei (y)). Ši savybė reiškia, kad didžiausią reikšmę turintis mazgas visada būtų pastatytas prie šaknies. Ši savybė sukonstruota krūva vadinama maks. Krūva. Yra dar vienas krūvos savybių variantas, teigiantis priešingai. (t. y. reikšmė (x) ≤ reikšmė (y)). Tai reiškia, kad mazgas, turintis mažiausią reikšmę, visada būtų pastatytas prie šaknies, taigi vadinamas min-krūva. Yra daugybė operacijų, atliekamų krūvose, tokių kaip minimalių (min-krūvose) arba maksimalių (maks. Krūvuose) radimas, mažiausio (min-krūvos) ar maksimumo (maksimaliose-krūvose) pašalinimas, didinimas (maks. - krūvos) arba mažėjantis (mažose krūvose) klavišas ir kt.
Kuo skiriasi „Stack“ ir „Heap“?
Pagrindinis skirtumas tarp krūvos ir krūvos yra tas, kad kol krūva yra linijinė duomenų struktūra, krūva yra netiesinė duomenų struktūra. Stack yra užsakytas sąrašas, kuris seka pagal LIFO ypatybę, o krūvas yra ištisas medis, einantis po krūvos ypatybės. Be to, stack yra ribota duomenų struktūra, palaikanti tik ribotą operacijų, kaip push ir pop, skaičių, tuo tarpu krūva palaiko platų spektrą operacijų, tokių kaip minimumo ar maksimumo radimas ir ištrynimas, rakto padidinimas ar sumažinimas ir sujungimas..