Unterschied zwischen Stack und Heap

Anonim

Stack vs Heap

Stack ist eine geordnete Liste, in der das Einfügen und Löschen von Listenelementen nur an einem Ende ausgeführt werden kann, oben. Aus diesem Grund wird Stack als Last-in-First-out (LIFO) -Datenstruktur betrachtet. Heap ist eine spezielle Datenstruktur, die auf Bäumen basiert und eine spezielle Eigenschaft erfüllt, die Heap-Eigenschaft genannt wird. Außerdem ist ein Haufen ein vollständiger Baum, was bedeutet, dass zwischen den Blättern des Baumes keine Lücken vorhanden sind. e. in einem vollständigen Baum wird jede Ebene ausgefüllt, bevor dem Baum eine neue Ebene hinzugefügt wird und die Knoten in einer bestimmten Ebene von links nach rechts gefüllt werden.

Was ist Stack?

Wie bereits erwähnt, handelt es sich bei stack um eine Datenstruktur, in der Elemente nur von einem Ende aus aufgerufen und entfernt werden. Stapel erlauben nur zwei grundlegende Operationen, die Push und Pop genannt werden. Die Push-Operation fügt ein neues Element an die Spitze des Stapels hinzu. Die Pop-Operation entfernt ein Element vom oberen Rand des Stapels. Wenn der Stapel bereits voll ist, wird ein Push-Vorgang als Stapelüberlauf betrachtet. Wenn eine Pop-Operation für einen bereits leeren Stack ausgeführt wird, wird dies als Stapel-Unterlauf betrachtet. Aufgrund der geringen Anzahl von Operationen, die auf einem Stapel ausgeführt werden könnten, wird dies als eine beschränkte Datenstruktur betrachtet. Abhängig von der Art und Weise, wie die Push- und Pop-Operationen definiert werden, ist es außerdem klar, dass Elemente, die zuletzt in den Stapel eingefügt wurden, zuerst aus dem Stapel gehen. Stack wird daher als LIFO-Datenstruktur betrachtet.

Was ist Haufen?

Wie bereits erwähnt, ist Heap ein vollständiger Baum, der die Heap-Eigenschaft erfüllt. Heap-Eigenschaft besagt, dass, wenn y ein untergeordneter Knoten von x ist, der im Knoten x gespeicherte Wert größer oder gleich dem im Knoten y gespeicherten Wert sein sollte (dh Wert (x) ≥ Wert (y)). Diese Eigenschaft impliziert, dass der Knoten mit dem größten Wert immer am Stamm platziert wird. Ein mit dieser Eigenschaft konstruierter Heap wird als Max-Heap bezeichnet. Es gibt eine andere Variation der Heap-Eigenschaft, die das Gegenteil davon angibt. (dh Wert (x) ≤ Wert (y)). Dies impliziert, dass der Knoten mit dem kleinsten Wert immer an der Wurzel platziert wird, also als Min-Heap bezeichnet. Es gibt ein breites Spektrum von Operationen, die auf Haufen durchgeführt werden, wie beispielsweise das Finden von Minimum (in Min-Heaps) oder Maximum (in Max-Heaps), Löschen von Minimum (in Min-Heaps) oder Maximum (in Max-Heaps) -heaps) oder abnehmender (in Min-Heaps) Schlüssel usw.

Was ist der Unterschied zwischen Stack und Heap?

Der Hauptunterschied zwischen Stacks und Heaps besteht darin, dass Stack zwar eine lineare Datenstruktur ist, Heap aber eine nichtlineare Datenstruktur ist. Stack ist eine geordnete Liste, die der LIFO-Eigenschaft folgt, während der Heap ein vollständiger Baum ist, der der Heap-Eigenschaft folgt.Darüber hinaus ist stack eine eingeschränkte Datenstruktur, die nur eine begrenzte Anzahl von Operationen als Push und Pop unterstützt, während Heap eine Vielzahl von Operationen unterstützt, z. B. das Finden und Löschen des Minimums oder Maximums, das Vergrößern oder Verkleinern des Schlüssels und das Zusammenführen.