// File: PilaF.java
// Time-stamp: "2003-03-12 12:54:10 calvanes"
// Scopo: pila di stringhe
//        realizzazione funzionale con condivisione di memoria

class NodoLista {
  public String info;
  public NodoLista next;
}

public class PilaF {
  // rappresentazione degli oggetti
  private NodoLista nodoinit; 

  //costruttore privato
  private PilaF(NodoLista n) {
    nodoinit = n;
  }

  //metodi pubblici
  public PilaF() {
    nodoinit = null;
  }
	
  public boolean estVuota() {
    return nodoinit == null;
  }
  
  public PilaF push(String s) {
    NodoLista temp = new NodoLista();
    temp.info = s;
    temp.next = nodoinit;
    return new PilaF(temp);
  }
    
  public PilaF pop() {
    if (nodoinit == null)
      throw new RuntimeException("pila vuota!");
    else
      return new PilaF(nodoinit.next);
  }
     
  public String top() {
    if (nodoinit == null)
      throw new RuntimeException("pila vuota!");
    else
      return nodoinit.info;
  }
     
  public String toString(){
    String ris = "";
    NodoLista p = nodoinit; 
    while(p != null){
      ris  = ris + p.info + "\n";
      p = p.next;
    }   
    return ris;   
  } 
}
