Stack vs Heap
Stack er en bestilt liste der innsetting og sletting av listeposter kun kan gjøres i den ene enden kalt toppen. På grunn av denne grunnen betraktes stabelen som en siste struktur (LIFO). Heap er en spesiell datastruktur som er basert på trær, og den tilfredsstiller en spesiell egenskap som heter heapegenskapen. Også en bunke er et komplett tre som betyr at det ikke er noen hull mellom bladets treer, dvs. i et komplett tre er hvert nivå fylt inn før du legger et nytt nivå til treet og nodene i et gitt nivå fylles fra venstre til høyre.
Hva er Stack?
Som nevnt tidligere, er stabelen en datastruktur der elementene legges til og fjernes fra bare en ende kalt toppen. Stabler tillater bare to grunnleggende operasjoner kalt push og pop. Trykkoperasjonen legger til et nytt element øverst i stabelen. Pop-operasjonen fjerner et element fra toppen av stabelen. Hvis stakken allerede er full, betraktes det som en stabeloverflate når en skyveoperasjon utføres. Hvis en popoperasjon utføres på en allerede tom stabel, betraktes den som en stabel understrøm. På grunn av det lille antallet operasjoner som kan utføres på en stabel, regnes det som en begrenset datastruktur. I tillegg, i henhold til måten push og pop-operasjonene er definert, er det klart at elementer som ble lagt til sist i stabelen, går ut av stakken først. Derfor er stabelen betraktet som en LIFO datastruktur.
Hva er Heap?
Som nevnt tidligere er heap et komplett tre som tilfredsstiller høyden. Heap-egenskapen sier at hvis y er en barnekode på x, må verdien lagret i node x være større enn eller lik verdien som er lagret i node y (dvs. verdi (x) ≥ verdi (y)). Denne egenskapen innebærer at node med størst verdi alltid vil bli plassert ved roten. En haug konstruert ved hjelp av denne egenskapen kalles en max-heap. Det er en annen variant av haugegenskapen som sier omvendt av dette. (dvs. verdi (x) ≤ verdi (y)). Dette innebærer at noden med den minste verdien alltid vil bli plassert på roten, såkalte en min-bunke. Det finnes et bredt spekter av operasjoner utført på hauger som å finne minimum (i minhull) eller maksimum (i makshøyder), slette minimum (i minhull) eller maksimum (i makshøyder), økende (i maks. -heaps) eller avtagende (i min-hoder) nøkkel, etc.
Hva er forskjellen mellom Stack and Heap?
Hovedforskjellen mellom stabler og hauger er at mens stabelen er en lineær datastruktur, er heap en ikke-lineær datastruktur. Stack er en bestilt liste som følger LIFO eiendommen, mens bunken er et komplett tre som følger høyden. Videre er stabelen en begrenset datastruktur som bare støtter et begrenset antall operasjoner som push og pop, mens heap støtter et bredt spekter av operasjoner som å finne og slette minimum eller maksimum, øke eller redusere nøkkelen og slå sammen.