Übungsaufgabe 3

Implementieren Sie die Schnittstelle Warteschlange

public interface Warteschlange { // alle final-Parameter sind auch const
	public void entleeren();
	public void eintragen(Object element) throws VollAusn;
	public Object lesen() throws LeerAusn; // requires !leer()
	public void entfernen() throws LeerAusn;
	public boolean leer(); // const
	public boolean voll(); // const
}

aus dem Programm (8.17)  als Reihung.

Im Stapel haben wir einen Index spitze geführt, der entsprechend der Füllung auf- und abpulsierte. In der Warteschlange müssen Sie zwei Indizes aeltestes und juengstes führen. Damit die freigewordenen Plätze wieder benutzt werden können, soll ein Index, wenn er das Ende der Reihung erreicht (überläuft),  bei 0 wieder angesetzt werden (zyklische Indizierung). Am einfachsten ist dies mit dem Restoperator % zu berechnen:

juengstes = (juengstes + 1) % inhalt.length; // wird 0 beim Überlauf 

Vergessen Sie nicht, über die Anzahl der eingetragenen Elemente Buch zu führen und ggf. ein VollAusn bzw. LeerAusn auszulösen!

Datenstruktur der Warteschlange als Reihung (Ringpuffer)

Fertigen Sie ein Stapeltestprogramm als main-Methode in einer Klasse an.


Freiwillige Zusatzaufgabe:

Fertigen Sie eine zweite Implementierung der Schnittstelle Warteschlange mit Hilfe der Standard-Datenbehälterklasse java.util.Vector. Sie können dabei auf folgende (Teil-)
Spezifikation der Klasse Vector zurückgreifen:

package java.util;
public class Vector {
    public void addElement(Object o);
    public void removeElement(Object o);
    public void remove ElementAt(int index);
    public Object elementAt(int index);
    public boolean isEmpty();
    public boolean contains(Object o);
    public int size();
}

Ihr Stapeltestprogramm sollte unverändert funktionieren.