Stack versus Heap
Stack is een geordende lijst waarin het invoegen en verwijderen van lijstitems alleen in één uiteinde kan worden gedaan, de top genoemd. Vanwege deze reden wordt stack beschouwd als een Last in First out (LIFO) -gegevensstructuur. Heap is een speciale gegevensstructuur die is gebaseerd op bomen en voldoet aan een speciale eigenschap die de heap-eigenschap wordt genoemd. Ook is een heap een complete boom, wat betekent dat er geen openingen tussen de bladeren van de boom zijn, dwz in een volledige boom wordt elk niveau ingevuld voordat een nieuw niveau aan de boom wordt toegevoegd en de knooppunten op een bepaald niveau worden gevuld vanuit van links naar rechts.
Wat is Stack?
Zoals eerder vermeld, is stack een gegevensstructuur waarin elementen worden toegevoegd en verwijderd uit slechts één uiteinde dat de top wordt genoemd. Met stapels zijn slechts twee fundamentele bewerkingen mogelijk, namelijk push en pop. De push-bewerking voegt een nieuw element toe aan de bovenkant van de stapel. De pop-bediening verwijdert een element van de bovenkant van de stapel. Als de stapel al vol is en er een pushbewerking wordt uitgevoerd, wordt deze beschouwd als een stapeloverloop. Als een popbewerking wordt uitgevoerd op een reeds lege stapel, wordt deze beschouwd als een underflow van een stapel. Vanwege het kleine aantal bewerkingen dat op een stapel kan worden uitgevoerd, wordt dit beschouwd als een beperkte gegevensstructuur. Bovendien, volgens de manier waarop de push- en popbewerkingen zijn gedefinieerd, is het duidelijk dat elementen die het laatst aan de stapel zijn toegevoegd als eerste uit de stapel gaan. Daarom wordt stack beschouwd als een LIFO-gegevensstructuur.
Wat is Heap?
Zoals eerder vermeld, is heap een complete boom die voldoet aan de heap-eigenschap. Heap-eigenschap geeft aan dat, als y een kindknooppunt van x is, de waarde die is opgeslagen in knooppunt x groter moet zijn dan of gelijk is aan de waarde die is opgeslagen in knooppunt y (d.w.z. waarde (x) ≥ waarde (y)). Deze eigenschap impliceert dat het knooppunt met de grootste waarde altijd bij de hoofdmap wordt geplaatst. Een hoop die is gebouwd met deze eigenschap wordt een max-heap genoemd. Er is nog een variant van de heap-eigenschap die het omgekeerde hiervan aangeeft. (d.w.z. waarde (x) ≤ waarde (y)). Dit betekent dat het knooppunt met de kleinste waarde altijd bij de wortel wordt geplaatst, dus een min-heap genoemd. Er is een groot aantal bewerkingen uitgevoerd op hopen, zoals het vinden van minimum (in min-heaps) of maximum (in max-heaps), het verwijderen van minimum (in min-heaps) of maximum (in max-heaps), verhogen (in max -hopen) of verlagen (in min-heaps) -toets, enz.
Wat is het verschil tussen Stack en Heap?
Het grootste verschil tussen stapels en stapels is dat terwijl stapel een lineaire gegevensstructuur is, heap een niet-lineaire gegevensstructuur is. Stack is een geordende lijst die de LIFO-eigenschap volgt, terwijl de heap een volledige structuur is die de heap-eigenschap volgt. Bovendien is stack een beperkte gegevensstructuur die slechts een beperkt aantal bewerkingen als push en pop ondersteunt, terwijl heap een breed scala aan bewerkingen ondersteunt, zoals het vinden en verwijderen van het minimum of maximum, het verhogen of verlagen van de sleutel en het samenvoegen.