/**
 * A Queue is a first in first out data structure
 */

public interface Queue<T> {
    
    /**
     * Get the number of elements in the Queue
     * @return the number of elements in the Queue
     */
    public int size();
    /**
     * Get the object at the front of the Queue
     * @return the front of the Queue
     */
    public T getFront();
    /**
     * Add an object to the back of the Queue
     * @param x the object to be added
     */
    public void enqueue(T x);
    /**
     * Remove the front of the Queue
     * @return the removed object
     */
    public T dequeue();
    /**
     * Check if Queue is empty
     * @return true if empty; false otherwise
     */
    public boolean isEmpty();
    
} // end Queue<T>

