Contents
Ein Stack ist eine Datenstruktur, die verwendet wird, um Daten in einer bestimmten Reihenfolge zu speichern. Zwei Operationen, die auf einem Stack ausgeführt werden können, umfassen eine Push-Operation, die ein Element in den Stack einfügt, und eine Pop-Operation, die das letzte Element entfernt, das in den Stack hinzugefügt wurde. Es folgt der Reihenfolge Last In First Out (LIFO). Jedes Mal, wenn ein Element hinzugefügt wird, wird es oben auf den Stapel gelegt und das einzige Element, das entfernt werden kann, ist das Element ganz oben im Stapel, genau wie ein Stapel von Objekten. Der Stapel befindet sich im Überlaufzustand, wenn er vollständig voll ist, und im Unterlaufzustand, wenn er vollständig leer ist.
Stack kann einfach mit einem Array oder einer Linked List implementiert werden. Arrays sind schnell, aber in der Größe begrenzt, und die verknüpfte Liste erfordert einen Overhead zum Zuordnen, Verknüpfen, Aufheben und Aufheben der Zuordnung, ist jedoch in der Größe nicht beschränkt.
Anwendung des Stapels
Heap ist ein Spezialfall einer ausgeglichenen binären Baumdatenstruktur, bei der der Wurzelknotenschlüssel mit seinen Kindern verglichen und entsprechend angeordnet wird. Ein Heap respektiert nämlich die Heap-Eigenschaft: Jeder Knoten muss niedriger sein als jeder seiner Kinder oder sein unterstes Element an seiner Wurzel, um leicht zugänglich zu sein .
Um einen binären Baum wie einen Heap darzustellen, besteht eine Implementierung darin, für jeden Knoten eine dynamische Zuordnung vorzunehmen, wobei 2 Zeiger auf seine Kinder zeigen. Ein Haufen kann auch durch die Darstellung in der Form einer realisiert werden Arrays , durch eine tun Ebene um Traversal des Haufens , wobei die Anordnung mit dem Element an der Wurzel beginnt, folgt dann mit den Kindern von dieser Wurzel, dann alle Kinder diese Kinder und dann die Urenkel und so weiter.
Lesen Sie weiter: Verfahren vs. Objekt orientierte Programmierung
VERGLEICHSGRUNDLAGE | STAPEL | HAUFEN |
Sichtbarkeit von Variablen/Objekten | In Stapeln gespeicherte Variablen sind nur für den Thread des Besitzers sichtbar. | Im Heap erstellte Objekte sind für alle Threads sichtbar. |
Strukturtyp | Stack ist eine lineare Datenstruktur. | Heap ist eine hierarchische Datenstruktur. |
Implementierung | Stack kann auf drei Arten implementiert werden: basierend auf verketteten Listen, dynamischem Speicher oder einfach auf Arrays. | Heap kann mithilfe von Arrays und Bäumen implementiert werden. |
Flexibilität | Stapel ist nicht flexibel; die zugewiesene Speichergröße kann nicht geändert werden. | Ein Heap ist flexibel und der zugewiesene Speicher kann geändert werden. |
Verwenden | Heap-Speicher wird verwendet, um Objekte in Java zu speichern. | Stapelspeicher wird verwendet, um lokale Variablen und Funktionsaufrufe zu speichern. |
Betreten | Der Stack-Frame-Zugriff ist einfacher als der Heap-Frame, da der Stack einen kleinen Speicherbereich hat und Cache-freundlich ist. | Der Zugriff auf Heap-Frames ist etwas schwieriger als auf den Stack-Frame, da Heap-Frames über den Speicher verteilt sind und daher mehr Cache-Fehltreffer verursachen. |
Zuweisung und Aufhebung | In einem Stack erfolgt die Zuweisung und Aufhebung der Zuweisung durch die CPU. | Im Heap muss die Zuweisung und Aufhebung der Zuweisung vom Programmierer manuell vorgenommen werden. |
Betrieb | Push, Pop und Top sind die einzigen Operationen auf dem Stack. | Fast alle Baumoperationen können auf Heaps angewendet werden. Ein Element häufen, Minimum finden und Maximum finden. |
Überlauf und Unterlauf | Im Stack können wir die Stack-Größe begrenzen, sodass Stack-Überlauf- und Stack-Unterlauf-Bedingungen auftreten. | Es gibt keinen Fall von Überlauf und Unterlauf im Heap. |
Besonderheit | Heap ist anwendungsspezifisch. | Stack ist threadspezifisch. |
Kosten | Die Handhabung des Stapelrahmens ist weniger kostspielig als die Handhabung des Haufenrahmens. | Die Handhabung des Haufenrahmens ist kostspieliger als die Handhabung des Stapelrahmens. |
Einleitung: Die Begriffe "Freeway" und "Highway" werden oft synonym verwendet, aber es gibt subtile Unterschiede…
Burritos und Enchiladas sind zwei beliebte Gerichte der mexikanischen Küche, die oft miteinander verwechselt werden.…
In der Zellbiologie spielen Replikation und Transkription entscheidende Rollen im genetischen Prozess. Beide sind Mechanismen,…
Osmose und Diffusion sind zwei grundlegende Prozesse, die in der Zellbiologie und Chemie eine entscheidende…
Einleitung: Die Evolution der mobilen Kommunikationstechnologie hat einen bedeutenden Meilenstein erreicht, als 4G (LTE) zu…
Einleitung: JPG und PNG sind zwei gängige Bildformate, die im Internet weit verbreitet sind. Obwohl…