public interface Queue<E> {

	/** Determine if the queue is empty*/
    public boolean is_empty ();

    /** Add a value to the end of the queue */
    public void enq (E elt); 
    
    /** Remove the front value and return it (if any) */
    public E deq ();

    /** Remove the first occurrence of the value */
    public void remove(E elt);
 
    public QNode<E> copy();
}

