public class StackArray  {


    private static final int MAX=100;   // dimensione massima dello stack
    private Object[] S;                 // lo stack
    private int head;                   // puntatore al top dello stack


    // post: costruisce uno stack vuoto
    public StackArray() {
        S = new Object[MAX];
        head = -1;
    }


    // post: ritorna il numero di elementi nello stack
    public int size() {
        return head +1;
    }


   // post: ritorna lo stack vuoto
    public void clear() {
        head = -1;
    }


    // post: ritorna true sse lo stack e' vuoto
    public boolean isEmpty() {
        return (head == -1);
    } 
  

    // post: ritorna true sse la coda e' piena
    public boolean isFull() {
        return (head == MAX -1);
    }
  
    // pre: stack non vuoto!
    // post: ritorna l'oggetto in cima allo stack
    public Object top() {
         return S[head];
    }
        

   // post: inserisce ob in cima allo stack
    public void push(Object ob) {
        if (isFull())
           return;
        S[++head] = ob;
    }


    // pre: stack non vuoto!
    // post: ritorna e rimuove l'elemento in cima allo stack
    public Object pop() {
        return S[head--];
    }    

}



