class PilhaPosicao
{
  Posicao [] P;
  int topo;
  private final int max=100;
  
  
  public PilhaPosicao()
  {
    P = new Posicao[max];
    topo = 0;
  }
  public void Empilha( Posicao  x ) throws PilhaOverflow
  {
    if(topo < max) {
      P[topo] = x;    
      topo++;
    }
    else throw new PilhaOverflow();
  }
  public void Desempilha() throws PilhaUnderflow
  {
    if(topo > 0) topo--;
    else throw new PilhaUnderflow();
  }
  public boolean PilhaVazia()
  {
    return topo == 0;
  }
  public Posicao TopoPilha() throws PilhaUnderflow, CloneNotSupportedException
  {
    if(topo > 0) return (Posicao) P[topo-1].clone();
    else throw new PilhaUnderflow();
  }
  
  public void imprimePilha()
  {
    System.out.println();
    
    for (int i = 0; i < topo; i++)
     System.out.print("   "+P[i]);
       
    System.out.println();
  }
}
