package pila;

class Nodo {
  public Object info;
  public Nodo next;
}

public class Pila {

  // rappresentazione degli oggetti

  private Nodo nodoinit;

  // realizzazione delle funzioni del tipo astratto

  public Pila () { // realizza pilaVuota
    nodoinit = null; 
  }

  public boolean estVuota() { 
    return nodoinit==null; 
  }

  public void push (Object o) {
    Nodo aux = new Nodo();
    aux.info = o;
    aux.next = nodoinit;
    nodoinit = aux;
  }

  public void pop() {
    if (estVuota()) 
      throw new RuntimeException("Pila: pop applicato ad una pila vuota");     
    else nodoinit = nodoinit.next;
  }     

  public Object top() {
    if (estVuota()) 
      throw new RuntimeException("Pila: top applicato ad una pila vuota");     
    else return nodoinit.info;
  }

}
