Stapel gegen Haufen
Stack ist eine geordnete Liste, in der das Einfügen und Löschen von Listenelementen nur an einem Ende, dem oberen Ende, erfolgen kann. Aus diesem Grund wird Stack als LIFO-Datenstruktur (Last in First Out) betrachtet. Heap ist eine spezielle Datenstruktur, die auf Bäumen basiert und eine spezielle Eigenschaft erfüllt, die als Heap-Eigenschaft bezeichnet wird. Ein Heap ist auch ein vollständiger Baum. Dies bedeutet, dass zwischen den Blättern des Baums keine Lücken bestehen. In einem vollständigen Baum wird jede Ebene gefüllt, bevor eine neue Ebene zum Baum hinzugefügt wird, und die Knoten in einer bestimmten Ebene werden gefüllt links nach rechts.
Was ist Stack??
Wie bereits erwähnt, ist Stack eine Datenstruktur, in der Elemente nur an einem Ende hinzugefügt und entfernt werden, das als Top bezeichnet wird. Stapel erlauben nur zwei grundlegende Operationen, die als Push und Pop bezeichnet werden. Der Push-Vorgang fügt ein neues Element am oberen Rand des Stapels hinzu. Der Pop-Vorgang entfernt ein Element vom oberen Rand des Stapels. Wenn der Stapel bereits voll ist, wird ein Push-Vorgang als Stapelüberlauf betrachtet, wenn ein Push-Vorgang ausgeführt wird. Wenn ein Pop-Vorgang für einen bereits leeren Stapel ausgeführt wird, wird dies als Stapelunterlauf betrachtet. Aufgrund der geringen Anzahl von Operationen, die auf einem Stack ausgeführt werden können, wird dies als eingeschränkte Datenstruktur betrachtet. Entsprechend 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. Daher wird Stack als LIFO-Datenstruktur betrachtet.
Was ist Haufen??
Wie bereits erwähnt, ist Heap ein vollständiger Baum, der die Heap-Eigenschaft erfüllt. Die Heap-Eigenschaft besagt, dass, wenn y ein untergeordneter Knoten von x ist, der in Knoten x gespeicherte Wert größer oder gleich dem in Knoten y gespeicherten Wert sein sollte (d. H. Wert (x) ≥ Wert (y)). Diese Eigenschaft impliziert, dass der Knoten mit dem größten Wert immer im Stammverzeichnis platziert wird. Ein mit dieser Eigenschaft erstellter Heap heißt Max-Heap. Es gibt eine andere Variation der Heap-Eigenschaft, die das Gegenteil davon angibt. (d. h. Wert (x) ≤ Wert (y)). Dies bedeutet, dass der Knoten mit dem kleinsten Wert immer an der Wurzel platziert wird, was als Min-Heap bezeichnet wird. Es gibt eine Vielzahl von Operationen für Heaps, z. B. das Finden eines Minimums (in Min-Heaps) oder eines Maximums (in Max-Heaps), das Löschen eines Minimums (in Min-Heaps) oder eines Maximums (in Max-Heaps) und eine Erhöhung (in max -heaps) oder abnehmender (in min-heaps) Schlüssel usw.
Was ist der Unterschied zwischen Stack und Heap??
Der Hauptunterschied zwischen Stapeln und Heaps ist, dass, während Stack eine lineare Datenstruktur ist, Heap eine nichtlineare Datenstruktur ist. Stack ist eine geordnete Liste, die der LIFO-Eigenschaft folgt, während der Heap eine vollständige Baumstruktur ist, die 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, beispielsweise das Finden und Löschen des Minimums oder Maximums, das Erhöhen oder Verringern des Schlüssels und das Zusammenführen.