Wann Stack, wann Queue?

Beginner Algorithmen und Datenstrukturen Deutsch
Also available: English
Created by Best · 16.08.2026 at 09:13 UTC

Stack und Queue lösen unterschiedliche Reihenfolgeprobleme. Braucht man das neueste Element zuerst (Undo, Parsing, Tiefensuche mit explizitem Stack), ist der Stack passend. Soll die Ankunftsordnung erhalten bleiben (Warteschlange, Breitensuche), ist die Queue passend.

Beide ADTs können auf Arrays oder verketteten Strukturen sitzen. Die Wahl der Implementierung betrifft Konstanten und Speicher, nicht die semantische Reihenfolge.

Prüffrage: Welche Invariante gilt nach einer Folge von Operationen, und welcher Fehlerfall ist spezifiziert?

Diagram

Zwei Richtungsbeispiele: Valid Parentheses [1], Implement Queue using Stacks [2].

Wo gebraucht

Routing und Crawler: BFS (Queue) für kürzeste ungewichtete Pfade, DFS/Stack für Topologie und Verschachtelung. Task-Scheduler: FIFO für Fairness, LIFO nur wenn zuletzt angestossene Arbeit zuerst fertig werden soll (Cache-Lokalität, Undo).

Vertiefung

Die passende Struktur folgt aus der gewünschten zeitlichen Ordnung. Müssen zuletzt entdeckte Teilprobleme zuerst abgeschlossen werden, passt LIFO. Muss dagegen die Reihenfolge der Ankunft oder die Entfernung vom Start erhalten bleiben, passt FIFO.

Diese Wahl verändert Algorithmen grundlegend. Bei Graphsuche führt LIFO tief in einen Zweig, während FIFO Knoten schichtweise nach ihrer Kantendistanz verarbeitet. Derselbe Graph und dieselbe Nachbarschaftsreihenfolge können daher sehr verschiedene Suchbäume ergeben.

In realen Systemen kommen Prioritäten und Begrenzungen hinzu. Ein Scheduler benötigt möglicherweise eine Prioritätsstruktur, während Rückgängig-Funktionen oft zwei LIFO-Speicher für Vorwärts- und Rückwärtsrichtung kombinieren.

Schwierigkeitsstufen

  1. Alltagsabläufe einer zeitlichen Ordnung zuordnen.
  2. Die Ausgabereihenfolge für dieselbe Eingabefolge vorhersagen.
  3. Suchstrategie und Datenstruktur aus einer Systemanforderung ableiten.

Fallstricke

Die Struktur wird oft nach einer vertrauten Bezeichnung statt nach der benötigten Entnahmereihenfolge gewählt. Priorisierte Aufgaben sind mit keiner der beiden reinen Ordnungen vollständig modelliert.


Sources

University approvals: 0
Tasks
Question 1

Ein Editor speichert Tastatureingaben für Undo. Welche Struktur passt am besten?

Question 2

Breitensuche in einem Graphen verwaltet Knoten, die als Nächstes besucht werden. Welche Struktur?

Question 3

Welche Ordnung braucht eine Suche, die Knoten nach wachsender ungewichteter Entfernung verarbeitet?

Question 4

Prüfe mit einem Stack, ob runde Klammern ausgeglichen sind.

Hint

ArrayDeque<Character> ist eine passende generische Deklaration. Verwende den Diamond-Operator new ArrayDeque<>() und Deque-Methoden.

Starter code is prefilled; replace TODO blocks with your solution.
1 test case will be used for grading
Run checks runtime behavior only. Final correctness is evaluated when you submit.
Card Info
  • Topic: Algorithmen und Datenstrukturen
  • Difficulty: Beginner
  • Completed: 0 users
Creator
Best
Best
BestBuddy