/**
 * ein Interface zur Beschreibung der essentiellen Funktionalität einer
 * Warteschlange
 */
public interface Warteschlange {

    /**
     * Fügt ein Element x in die Schlange ein.
     * @param x das einzufügende Element 
     */
    void in(Object x);

    /** 
     * Liefert aus einer nicht-leeren Schlange ein Element und löscht
     * es aus der Schlange. Fairness ist dabei kein Kriterium.
     * Ist die Schlange leer, so wird null zurückgeliefert.
     * @return das Element
     */
    Object out();

    /**
     * Testet, ob die Schlange leer ist.
     * @return ob sie leer ist
     */
    boolean empty();
}

