package tad.pilha;

public class PilhaLista implements IPilha {
    private class No {
        public No anterior = null;
        public Object valor;
    }
    
    private No topo = null;
    private int tamanho = 0;
    
    @Override
    public void empilhar(Object o) {
        No novo = new No();
        novo.valor = o;
        tamanho++;
        
        novo.anterior = topo;
        topo = novo;
    }
    
    @Override
    public Object desempilhar() throws EPilhaVazia {
        if(estaVazia())
            throw new EPilhaVazia();
        
        Object desempilhado = topo.valor;
        topo = topo.anterior;
        tamanho--;
        return desempilhado;
    }
    
    @Override
    public Object topo() throws EPilhaVazia {
        if(estaVazia())
            throw new EPilhaVazia();
        return topo.valor;
    }
    
    @Override
    public boolean estaVazia() {
        return topo == null;
    }
    
    @Override
    public int tamanho() {
        return tamanho;
    }
}

@@ -555,22 +555,18 @@
         
-Object
+No
  desempi
@@ -573,30 +573,24 @@
 lhado = topo
-.valor
 ;%0A        to
@@ -594,19 +594,58 @@
  topo = 
-top
+desempilhado.anterior;%0A        desempilhad
 o.anteri
@@ -638,32 +638,39 @@
 pilhado.anterior
+ = null
 ;%0A        tamanh
@@ -701,16 +701,22 @@
 mpilhado
+.valor
 ;%0A    %7D%0A

Update PilhaLista.java