// Queue implemented using lists

public class QueueAsList implements SeqStructure{
    
    private SLL list;
    private int size;

    public QueueAsList() { 
	list = new SLL();
    }
        
    // enqueue: put o at end of list:
    public void put(Object o) {
	list.add(o);
	size++;
    }
    
    // dequeue: remove and return first element of list:
    public Object get() {
	if (isEmpty()) {
	    System.out.print("Empty!");
	    return null;
	}
	Object o = list.getHead().getItem();
	list.remove(o);
	size--;
	return o;
    }
    
    // empty Q means empty list:
    public boolean isEmpty() {
	return list.isEmpty();
    }
    
    // return number of elements:
    public int size() {
	return size;
    }
    
    // Stringify:
    public String toString() {
        return "FIFO: ["+list+"]";
    }

}
