Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2013
    Messaggi
    42

    [Java] Problema con pila

    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.

  2. #2
    Utente di HTML.it
    Registrato dal
    Dec 2013
    Messaggi
    42
    Risolto. Il problema era nel main:

    codice:
    if (pila.pop() == 0) {
                 System.out.println("La pila è vuota!\n");
    } else {
                 System.out.println("Elemento tolto dalla pila: " + pila.pop() + "\n");
    }

    Così facendo richiamavo il metodo due volte senza che ce ne fosse bisogno e mi dava l'impressione di "saltare" un output. Ho risolto modificando giusto qualche riga con il seguente risultato:

    codice:
    valore = pila.pop();
    if (valore == 0) {
                 System.out.println("La pila è vuota!\n");
    } else {
                 System.out.println("Elemento tolto dalla pila: " + valore + "\n");
    }

    Che imbecille...
    Ultima modifica di kaine25; 13-01-2016 a 22:29

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.