Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    35

    [C/C++] Problema stampa lista

    Quando cerco di stampare a video gli elementi della mia testa, mi accorgo che esce sempre 0 e non riesco a capire il motivo.


    main.cpp

    codice:
    #include <cstdlib>
    #include <iostream>
    #include "prova.h"
    
    using namespace std;
    
    int main(int argc, char *argv[])
    {
        //VARIABILI
        Pnodo testa;//creo la testa (puntatore record)
        testa=0;//inizializzi la testa a 0
        int n;//numero massimo di valore da inserire nella lista
        int x;//valore che si inserirà nel for
        
        cout<<"Quanti valori vuoi inserire nella lista? Inserisci: ";
        cin>>n;
        
        for (int i=0; i<n; i++)
          {
                 cout<<"Inserisci il " <<i <<"^ valore: ";
                 cin>>x;
                 push(testa,x);//inserimento in testa alla lista;
          }
        
    
        cout<<"La lista inserita e':\n";
        for (int i=0; i<n; i++)
          {
                 cout<<"Il " <<i <<"^ valore e': " <<endl;
                 stampa(testa,x);//stampa dalla testa
          }
        
        system("PAUSE");
        return EXIT_SUCCESS;
    }
    prova.h

    codice:
    #ifndef prova_h
    #define prova_h
    typedef struct nodo *Pnodo;
    typedef struct nodo{
            int elemento;
            Pnodo successivo;
            };
            
    void push(Pnodo &,int &);//inserimento in testa alla lista;
    void stampa(Pnodo &,int &);//stampa dalla testa
    
    #endif

    prova.cpp
    codice:
    #include <cstdlib>
    #include <iostream>
    #include "prova.h"
    
    using namespace std;
    
    void push(Pnodo &nuovaTesta,int &x)//inserimento in testa alla lista;
    {
         Pnodo nuovo = new nodo; //alloco spazio in memorie heap
         nuovo->elemento = x; //associo il valore x;
         nuovo->successivo = nuovaTesta; //lo lego alla lista
         nuovo = nuovaTesta; //diventa la nuova testa
         cout<<nuovaTesta;
    }
    
    void stampa(Pnodo &nuovaTesta,int &x)//stampa dalla testa
    {
         Pnodo temp;
         temp = nuovaTesta;
         while(temp!=0)
          {
             cout << temp->elemento;
             temp = temp->successivo;
          }
    }

  2. #2
    Beh controlla quel push ... non ti sembra che inserisca sempre nello stesso nodo ?
    il cambio tra nuova testa e successivo lo devi fare nel for d'inserimento, non nel push.

    metti nuovaTesta in successivo però quando il for fa un altro step, devi cambiare testa con successivo, sennò inserisce sempre al successivo del primo nodo

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    35
    grazie tante!!

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.