====== Warteschlange (Queue) ====== Für das nächste Kapitel [[..breitensuche:start|"Breitensuche"]] brauchen wir eine neue Datenstruktur, die **Warteschlange** (engl.: Queue). {{ :graphen:pasted:20231012-120214.png?400 }} In einer Warteschlange können beliebig viele Elemente nacheinander abgelegt werden. Sie besitzt eine Methode ''addLast'' um Elemente am hinteren Ende der Warteschlange anzufügen und eine Methode ''removeFirst'' um Elemente am vorderen Ende zu entnehmen. \\ \\ In der Programmiersprache Java gibt es mehrere Klassen, die die Aufgaben einer Warteschlange erfüllen können, daher sind die Methoden der Warteschlange im Interface ''Queue'' definiert, das von mehreren Klassen implementiert wird, insbesondere von der Klasse ''LinkedList'', die wir im Folgenden verwenden. Dabei ist ''T'' die Klasse der Objekte, die in der ''LinkedList'' gespeichert werden können. \\ \\ Am folgenden Beispiel, in dem String-Werte zu einer ''LinkedList'' hinzugefügt/aus dieser entnommen werden, sehen Sie, wie man diese Datenstruktur verwenden kann: {{ :graphen:wartschlange:pasted:20231013-091720.png?500 }} **Tipp: Iterieren über alle Elemente einer ''LinkedList''** \\ \\ Eine Wiederholung, die für alle Elemente einer ''LinkedList'' ausgeführt wird, kannst Du z.B. mit der vereinfachten for-Loop erreichen:
===== Beispiel: Supermarktkasse ===== Erstelle eine Klasse ''Supermarktkasse" mit den Methoden ''anstellen(String name)'', ''alleAusgeben()'' und ''kassieren()''. Das unten schon vorgegebene Hauptprogramm soll die folgende Bildschirmausgabe bewirken: {{ :graphen:wartschlange:pasted:20231013-104526.png }} **Tipps:** \\ * //Zur Ausgabe der Gesamtliste siehe den Tipp oben!// * Gib der Klasse ''Supermarktkasse'' ein Attribut ''queue'' vom Datentyp ''LinkedList''. Instanziere das Objekt im Konstruktor, dann kannst Du es nachfolgend in allen anderen Methoden benutzen, um die Kunden zu speichern.
[[.supermarktkasseloesung:start|Lösung]]