/**
  * Interface for a stack: a collection of objects
  * that are inserted and removed according to the 
  * last-in first-out principle.
  * 
  * @author Roberto Tamassia
  * @author Michael Goodrich
  * @see StackEmptyException
  */

public interface Stack {
 /**
  * @return number of elements in the stack. 
  */
  public int size();
 /** 
  * @return true if the stack is empty, false otherwise. 
  */
  public boolean isEmpty();
 /** 
  * @return top element in the stack.  
  * @exception StackEmptyException if the stack is empty. 
  */
  public Object top() 
    throws StackEmptyException;  
 /**
  * Insert an element at the top of the stack.
  * @param element element to be inserted.
  */
  public void push (Object element); 
 /** 
  * Remove the top element from the stack.
  * @return element removed.
  * @exception StackEmptyException if the stack is empty.
  */
  public Object pop()
    throws StackEmptyException; 
}