public class Queue {
    private List first, last;
    // Konstruktor:
    public Queue() {
        first = last = null;
    }
    // Objekt-Methoden:
    public boolean isEmpty() {
        return List.isEmpty(first);
    }
    public int dequeue() {
        int result = first.info;
        if (last == first) last = null;
        first = first.next;
        return result;
    }
    public void enqueue(int x) {
        if (first == null)
            first = last = new List(x);
        else {
            last.insert(x);
            last = last.next;
        }
    }
    public String toString() {
        return List.toString(first);
    }

    public static void main(String args[]) {
        Queue q = new Queue();

        q.enqueue(1);
        q.enqueue(2);
        q.enqueue(3);
        q.enqueue(4);
        System.out.println(""+q);
        while (q.isEmpty() == false) {
            int x = q.dequeue();
            System.out.println(x);
        }
    }
} // end of class Queue
