Verem vs halom
A Stack egy rendezett lista, amelyben a tételek beillesztése és törlése csak az egyik tetején, úgynevezett tetején végezhető el. Ezen okból kifolyólag a verem az utolsó az elsőben (LIFO) adatszerkezetnek tekinthető. A halom egy fákon alapuló speciális adatszerkezet, amely kielégíti a halom tulajdonságnak nevezett speciális tulajdonságot. Ezenkívül egy halom teljes fa is, ami azt jelenti, hogy nincsenek hézagok a fa levelei között, azaz egy teljes fában minden szintet kitöltenek, mielőtt új szintet adnak a fához, és egy adott szint csomópontjai balról jobbra.
Mi az a verem??
Mint korábban már említettük, a verem olyan adatszerkezet, amelyben elemeket adnak hozzá és távolítanak el csak az egyik tetejük nevű végéből. A halmok csak két alapvető műveletet tesznek lehetővé, úgynevezett push és pop. A push művelet új elemet ad a verem tetejéhez. A pop művelet eltávolítja az elemet a verem tetejéről. Ha a verem már megtelt, amikor egy tolóműveletet hajt végre, akkor verem túlcsordulásának tekintik. Ha egy pop műveletet már egy üres halomon hajtanak végre, akkor verem alulcsordulásának tekintik. A veremben végrehajtható csekély számú művelet miatt korlátozott adatszerkezetnek tekintik. Ezen felül, a push és a pop műveletek meghatározásának módja szerint egyértelmű, hogy az elemek, amelyeket utoljára adtak hozzá a veremnek, előbb a veremből kerülnek ki. Ezért a stackot LIFO adatszerkezetnek tekintik.
Mi a halom??
Mint korábban már említettük, a halom teljes fa, amely kielégíti a halom tulajdonságát. A halom tulajdonsága azt állítja, hogy ha y az x gyermekcsomópontja, akkor az x csomópontban tárolt értéknek nagyobbnak vagy egyenlőnek kell lennie az y csomópontban tárolt értékkel (azaz (x) érték ≥ érték (y)). Ez a tulajdonság azt jelenti, hogy a legnagyobb értékű csomópontot mindig a gyökérzetbe helyezik. Az ezzel a tulajdonsággal összeállított halomot max-halomnak nevezzük. Van egy másik változat a halomtulajdonban, amely ennek fordítottját állítja. (azaz érték (x) ≤ érték (y)). Ez azt sugallja, hogy a legkisebb értékű csomópontot mindig a gyökérnél helyezik el, úgynevezett min-halomnak. Széles körű művelet hajtható végre a rakásokon, például minimális (min-halomban) vagy maximális (max-halomban), minimális (min-halomban) vagy maximális (max-halomban) törlése, növekmény (max. -heap) vagy csökkenő (perc-halomban) gomb stb.
Mi a különbség a Stack és a Heap között??
A halom és a halom közötti fő különbség az, hogy míg a halom lineáris adatszerkezet, a halom nemlineáris adatszerkezet. A Stack egy rendezett lista, amely követi a LIFO tulajdonságot, míg a halom egy teljes fa, amely követi a halom tulajdonságát. Ezenkívül a stack egy korlátozott adatszerkezet, amely csak korlátozott számú műveletet támogat, mint push és pop, míg a halom támogatja a műveletek széles skáláját, például a minimális vagy maximális megkeresését és törlését, a kulcs növelését vagy csökkentését és az egyesítést.