Zum Inhalt springen

Informatik · Klasse 11–12 · aktualisiert

Warteschlange (Queue): FIFO einfach erklärt

Du lernst, wie eine Warteschlange Einträge ordnet, wie du sie bedienst und wie du sie im Speicher umsetzen kannst.

0 von 9 Aufgaben gelöst

Warteschlange (Queue): FIFO einfach erklärt

Kurz gesagt

Eine Warteschlange, englisch Queue, entnimmt den zuerst eingefügten noch vorhandenen Eintrag zuerst. Das heißt FIFO, kurz für First in, first out: zuerst hinein, zuerst heraus.

Eine Queue ist eine Datenstruktur, also eine festgelegte Art, Daten zu ordnen und zu verwalten. Einen einzelnen gespeicherten Eintrag nennen wir Element. Du untersuchst die Reihenfolge, die Arbeitsschritte und verschiedene Umsetzungen einer Queue. Alle Beispiele und Aufgabenfälle auf dieser Seite sind erfunden.

Deine Lernziele

Hake ab, was du schon kannst. Löst du alle Aufgaben eines Abschnitts, hakt Termi das Ziel für dich ab.

4 Abschnitte

Eine Queue arbeitet nach FIFO: First in, first out bedeutet „zuerst hinein, zuerst heraus“. Neue Elemente kommen hinten hinzu. Entnommen wird vorn das Element, das von den noch vorhandenen Elementen zuerst eingefügt wurde. Bereits entnommene Elemente gehören nicht mehr zur Queue.

Ein Stack ist ein Stapel von Elementen. Er arbeitet nach LIFO: Last in, first out bedeutet „zuletzt hinein, zuerst heraus“. Beim Stack wird das zuletzt eingefügte noch vorhandene Element zuerst entnommen. Queue und Stack unterscheiden sich damit in ihrer Entnahmereihenfolge.

Definition

FIFO

Von den noch vorhandenen Elementen wird das zuerst eingefügte Element zuerst entnommen.

Beispiel: Queue und Stack mit erfundenen Einträgen

  1. 1In eine leere Queue und einen leeren Stack kommen nacheinander „Wolke“, „Blitz“ und „Regen“. Vorher wird nichts entnommen.
  2. 2Die Queue entnimmt zuerst „Wolke“, weil dieser Eintrag zuerst eingefügt wurde.
  3. 3Der Stack entnimmt zuerst „Regen“, weil dieser Eintrag zuletzt eingefügt wurde.

Teste dich

LeichtEine leere Queue erhält nacheinander „Rot“, „Türkis“ und „Violett“. Vorher wird nichts entnommen. Welcher Eintrag kommt zuerst heraus?

Alles auf einen Blick

Warteschlange (Datenstruktur)

  • Reihenfolge

    Eine Queue entnimmt nach FIFO das zuerst eingefügte noch vorhandene Element; ein Stack nach LIFO das zuletzt eingefügte.

  • Verändern

    enqueue fügt hinten ein, wenn Platz vorhanden ist. dequeue entfernt bei einer nicht leeren Queue das vordere Element.

  • Abfragen

    front betrachtet bei einer nicht leeren Queue das vordere Element. empty prüft auf Leerheit. Beide verändern die Queue nicht.

  • Array

    In der beschriebenen Verschiebevariante rücken übrige Einträge nach einer Entnahme nach links. Für mehr Plätze braucht es ein größeres Array und das Kopieren der Einträge.

  • Ringpuffer

    Ein Array wird im Kreis genutzt. Das vermeidet das Verschieben übriger Einträge, schafft aber keine zusätzlichen Plätze.

  • Verkettete Liste

    Mit Verweisen auf Anfang und Ende kann die Queue hinten Knoten anhängen und vorn entfernen, ohne die übrige Liste zu durchlaufen. Knoten brauchen zusätzlichen Speicher.

Musteraufgabe · Schritt für Schritt

Erfundene Aufträge: Was steht am Ende vorn?

  1. 1Aufgabe: Starte mit einer leeren Queue. Führe enqueue(„Druck“), enqueue(„Kopie“), front(), dequeue(), enqueue(„Scan“) und dequeue() aus. Gesucht ist das vordere Element danach.
  2. 2enqueue(„Druck“) ergibt [„Druck“].
  3. 3enqueue(„Kopie“) ergibt [„Druck“, „Kopie“].
  4. 4front() liefert „Druck“. Die Queue bleibt [„Druck“, „Kopie“].
  5. 5dequeue() liefert „Druck“. Übrig bleibt [„Kopie“].
  6. 6enqueue(„Scan“) ergibt [„Kopie“, „Scan“].
  7. 7dequeue() liefert „Kopie“. Übrig bleibt [„Scan“].
  8. 8Ergebnis: „Scan“ steht vorn, weil die beiden vorher eingefügten Einträge entnommen wurden.

Fehler finden

Prüfe die Abfrage einer erfundenen Queue In einer Zeile steckt ein Fehler. Tippe sie an.

Lückentext

Wähl in jeder Lücke das passende Wort und prüf dann deine Antworten.

Eine Queue erhält nacheinander „Korn“, „Salz“ und „Mehl“. Es wurde noch nichts entnommen. Als Nächstes kommt heraus. Eine andere Queue enthält vorn „Pinsel“ und dahinter „Lineal“. Nach front() enthält sie . Ein Ringpuffer nutzt die Plätze 0 bis 5. Auf Platz 5 folgt bei der Suche nach dem nächsten Platz die Nummer .

Karteikasten

Erst selbst überlegen, dann umdrehen.

Übung mit Feedback

Abschluss-Check: Warteschlange (Datenstruktur)

LeichtEin leerer Stack erhält nacheinander „Pudding“, „Keks“ und „Eis“. Vorher wird nichts entnommen. Welcher Eintrag wird zuerst entnommen?
MittelEine Queue enthält von vorn nach hinten [„Segel“, „Ruder“]. Es folgen enqueue(„Bug“), dequeue(), enqueue(„Anker“) und dequeue(). Welcher Inhalt bleibt übrig?
SchwerIn der beschriebenen Umsetzung ist das Array voll. Die Queue soll mehr Einträge aufnehmen und alle vorhandenen behalten. Welcher Schritt schafft zusätzlichen Platz?

Weiterlesen in Informatik