Ciao a tutti! Ho realizzato un piccolo programmino che gestisce una pila (l'ho implementata come struttura). Il problema è che se, dopo aver aggiunto un elemento, richiamo il metodo "pop" l'elemento risulta essere uguale a 0. Se invece aggiungo più elementi, allora salta un elemento e mi fa vedere il successivo.

ES: Inserisco 1, 2, 3, 4, 5.
La situazione della pila è HEAD ---> 5 ---> 4 ---> 3 ---> 2 ---> 1 ---> NULL.
In output ricevo (in successione): 4, 2, 0, lista vuota.

Oppure

Inserisco 1, 2, 3, 4, 5, 6.
La situazione della pila è HEAD ---> 6 ---> 5 ---> 4 ---> 3 ---> 2 ---> 1 ---> NULL.
In output ricevo (in successione): 5, 3, 1, lista vuota.

Non ho la minima idea di come possa essere possibile, visto che ho controllato e ricontrollato ed ho anche confrontato il mio codice con alcuni online.

Vi scrivo le due classi interessate:

CLASSE PILA
codice:
package struttura;


public class Pila {


    private Nodo head;


    public Pila() {
        head = null;
    }


    public void push(int info) {
        Nodo p = new Nodo(info);

        p.setLink(head);
        head = p;
    }


    public int pop() {
        if (head == null) {
            return 0;
        }
        int valore = head.getInfo();
        head = head.getLink();


        return valore;
    }


}
CLASSE NODO
codice:
package struttura;


public class Nodo {


    private int info;
    private Nodo link;


    public Nodo(int info) {
        this.info = info;
        link = null;
    }


    public void setInfo(int info) {
        this.info = info;
    }


    public int getInfo() {
        return info;
    }


    public void setLink(Nodo link) {
        this.link = link;
    }


    public Nodo getLink() {
        return link;
    }
}


Mi affido a voi. Grazie in anticipo.