Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2010
    Messaggi
    211

    [C++] errore nel metodo succlista(?)

    ciao, ho creato la classe lista con i puntatori con i relativi metodi. ho un problema: se inserisco solo un nuovo record, quando faccio la lettura dell'elemento del record non ci sn problemi, stampa a video il valore dell'elemento del record; se, invece, faccio un inserimento iterativo di più elementi (nell'esempio che ho creato ne sono 10) mi stampa a video gli indirizzi dei record al posto dei valori degli elementi. ora posto i codici che ho creato:

    listap.h
    codice:
    #ifndef _LISTAP_H
    #define _LISTAP_H
    
    #include <iostream>
    
    using namespace std;
    
    typedef int tipoelem;
    struct cella
            {
                tipoelem elemento;
                struct cella* precedente;
                struct cella* successivo;
            };
    typedef cella* posizione;
    
    class listap
    {
        public:
            posizione lista;
                    
            listap();
            void crealista();
            bool listavuota();
            posizione primolista();
            bool finelista(posizione);
            posizione succlista(posizione);
            posizione predlista(posizione);
            tipoelem leggilista(posizione);
            void scrivilista(posizione &, tipoelem);
            void inslista(posizione &, tipoelem);
            void canclista(posizione &);
    };
    
    #endif
    listap.cpp
    codice:
    #include "listap.h"
    
    listap::listap()
    {
        crealista();
    }
    
    void listap::crealista()
    {
        tipoelem elementonullo;
        lista = (posizione) malloc(sizeof(cella));
        lista->elemento = elementonullo;
        lista->precedente = lista;
        lista->successivo = lista;
    }
    
    bool listap::listavuota()
    {
        return((lista->successivo == lista) && (lista->precedente == lista));
    }
    
    posizione listap::primolista()
    {
        return(lista->successivo);
    }
    
    bool listap::finelista(posizione pos)
    {
        return(pos->successivo == lista);
    }
    
    posizione listap::succlista(posizione pos)
    {
        return(pos->successivo);
    }
    
    posizione listap::predlista(posizione pos)
    {
        return(pos->precedente);
    }
    
    tipoelem listap::leggilista(posizione pos)
    {
        return(pos->elemento);
    }
    
    void listap::scrivilista(posizione &pos, tipoelem elem)
    {
        pos->elemento = elem;
    }
    
    void listap::inslista(posizione &pos, tipoelem elem)
    {
        posizione temp;
        temp = new cella;
        temp->elemento = elem;
        temp->precedente = pos->precedente;
        temp->successivo = pos;
        pos->precedente = temp;
        (pos->precedente)->successivo = temp;
        pos = temp;
    }
    
    void listap::canclista(posizione &pos)
    {
        posizione temp = pos;
        (pos->successivo)->precedente = pos->precedente;
        (pos->precedente)->successivo = pos->successivo;
        pos = pos->successivo;
        delete(temp);
    }
    provalistap.cpp
    codice:
    #include <cstdlib>
    #include <iostream>
    #include "listap.h"
    
    #define MAX 10
    
    using namespace std;
    
    int main(int argc, char *argv[])
    {
        listap l;
        posizione p = l.primolista();
        tipoelem i = 0;
        while(i <= MAX)
        {
            l.inslista(p, i);
            p = l.succlista(p);
            i++;
        }
        i = 0;
        p = l.primolista();
        while(i <= MAX)
        {
            cout << l.leggilista(p) << "\n";
            p = l.succlista(p);
            i++;
        }
            
        system("PAUSE");
        return EXIT_SUCCESS;
    }
    il codice di provalistap.cpp è stato fatto per controllare se il codice delle liste funziona.
    dov'è l'errore?

  2. #2
    Utente di HTML.it
    Registrato dal
    Jan 2010
    Messaggi
    211
    al posto dello smile va ')'.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2010
    Messaggi
    211
    c'è qualcuno che potrebbe darmi un suggerimento???

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Ma il valore di

    elementonullo

    qual è?

    Non è inizializzato e quindi puo' assumere valori indefiniti.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

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 © 2024 vBulletin Solutions, Inc. All rights reserved.