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
CLASSE NODOcodice: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; } }
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.

Rispondi quotando