Stack vs Heap
Stack és una llista ordenada en la qual la inserció i la supressió d'elements de la llista només es poden fer en un extrem anomenat la part superior. Per aquest motiu, la pila es considera una estructura de dades Last in First Out (LIFO). Heap és una estructura de dades especial que es basa en arbres i que compleix una propietat especial anomenada propietat heap. A més, un munt és un arbre complet, la qual cosa significa que no hi ha buits entre les fulles de l'arbre, és a dir, en un arbre complet, cada nivell s'omple abans d'afegir un nou nivell a l'arbre i els nodes d'un nivell determinat s'omplen des de d'esquerra a dreta.
Què és Stack?
Com s'ha esmentat anteriorment, la pila és una estructura de dades en la qual s'afegeixen i s'eliminen elements només d'un extrem anomenat la part superior. Les piles només permeten dues operacions fonamentals anomenades push i pop. L'operació push afegeix un nou element a la part superior de la pila. L'operació pop elimina un element de la part superior de la pila. Si la pila ja està plena, quan es realitza una operació push, es considera com un desbordament de pila. Si es realitza una operació pop en una pila ja buida, es considera com un desbordament de pila. A causa del petit nombre d'operacions que es poden realitzar en una pila, es considera una estructura de dades restringida. A més, segons la manera en què es defineixen les operacions push i pop, és evident que els elements que s'han afegit per últim a la pila surten primer de la pila. Per tant, la pila es considera una estructura de dades LIFO.
Què és Heap?
Com s'ha esmentat anteriorment, heap és un arbre complet que compleix la propietat heap. La propietat Heap estableix que, si y és un node fill de x, el valor emmagatzemat al node x hauria de ser superior o igual al valor emmagatzemat al node y (és a dir, valor (x) ≥ valor (y)). Aquesta propietat implica que el node amb el valor més gran es col·locaria sempre a l'arrel. Un munt construït amb aquesta propietat s'anomena munt màxim. Hi ha una altra variació de la propietat heap que indica el contrari. (és a dir, valor(x) ≤ valor(y)). Això implica que el node amb el valor més petit es col·locaria sempre a l'arrel, per tant anomenat munt min. Hi ha una àmplia gamma d'operacions realitzades en munts, com ara trobar el mínim (en munts mínims) o el màxim (en munts màxims), suprimir el mínim (en munts mínims) o el màxim (en munts màxims), augmentar (en munts màxims). -heaps) o decreixent (en min-heaps), etc.
Quina diferència hi ha entre Stack i Heap?
La principal diferència entre piles i munts és que, mentre que la pila és una estructura de dades lineal, la pila és una estructura de dades no lineal. La pila és una llista ordenada que segueix la propietat LIFO, mentre que el munt és un arbre complet que segueix la propietat del munt. A més, stack és una estructura de dades restringida que només admet un nombre limitat d'operacions com push i pop, mentre que heap admet una àmplia gamma d'operacions com trobar i suprimir el mínim o el màxim, augmentar o disminuir la clau i fusionar..