Übungsaufgabe 5

Thema: Verkettete Listen

Fertigen Sie eine weitere Implementierung der Schnittstelle Warteschlange aus der Übungsaufgabe 3 an als verkettete Liste an.

Eine Warteschlange kann auch mit einem Anker als ein vorwärts verketteter Ring implementiert werden: Der Anker referiert den jüngsten Knoten; dessen Verkettung referiert den ältesten Knoten. Ändern sie das Programm 9.12 (S.209) entsprechend. Verwenden Sie dabei geeignete if-Anweisungen (anstelle von Auffangen der NullPointerException), um die Ausnahmefälle zu überprüfen. Beachten Sie, dass bei nur einem Eintrag der Knoten auf sich selbst verweist (zusätzlicher Sonderfall).

Zur Unterstützung systematischer Tests von Datenbehältern empfiehlt sich grundsätzlich, eine private Testmethode (z.b. testausgabe()) zu implementieren, die den gesamten Inhalt des Datenbehälters ausgibt.
Schreiben sie eine solche Methode testausgabe, die die Warteschlange rekursiv abarbeitet und die toString-Methode (von Object) bei der Ausgabe der eingetragenen Daten benutzt.

Verwenden Ihren Stapeltesttreiber aus der Übungsaufgabe 3; ergänzen Sie so, dass er einen gründlichen Test ausführt. Sie sollen darin alle Methoden der Klasse in allen möglichen (Extrem-) Situationen aufrufen und abfragen, ob von Ihnen das erwartete Ergebnis produziert wurde. Nutzen Sie Ihre testausgabe-Methode, um sich Einblick in den Zustand der Warteschlange zu verschaffen.