Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 22

Discussione: [C++] stampare lista

  1. #1

    [C++] stampare lista

    Ciao raga, ho creato questo piccolo programma che crea una lista a puntatori.
    Esso, esegue gli inserimenti in testa.
    Però non riesco a fare la stampa, mi potete aiutare???
    codice:
    #include <iostream>
    using namespace std;
    
    struct lista
    {
        int num;
        lista *punt;   
    };
    
    int main()
    {
        lista *x;
        int y;
        char ins;
        
        lista *p = new lista;
        cout <<"Inserisci il numero = ";
        cin >> p->num;
        p->punt=NULL;
        x=p;
        cout <<"Devi inserire ? (s/n) = ";
        cin >>ins;
        
        while (ins=='s' || ins=='S')
        {
         lista *q = new lista;
         cout <<"Inserisci il numero = ";
         cin >> q->num;  
         q->punt=x; 
         x=q; 
         cout <<"Devi inserire ? (s/n) = ";
         cin >>ins; 
        }
        
        system("PAUSE");
    }

  2. #2
    Quindi poiche' alla fine, q e' la testa, quando cerco di fare un ciclo , mi dice che q non e' dichiarata.

  3. #3
    Devi iterare tutta la lista con un while, e man mano che avanzi nella lista stampi il valore dell'oggetto corrente....

  4. #4
    Ovviamente devi ricominciare dall'inizio della lista! Il puntatore al primo elemento è p; quindi devi partire da p, e iterare fino a che non trovi NULL

  5. #5
    scusa, Infernal, ma non mi trovo. Per me p e' l'ultimo nodo, infatti come detto prima, gli inserimenti (dei nodi), li faccio in testa, per questo collego subito p a NULL.
    Cmq non e' che potresti postarmi il codice?
    io faccio:
    codice:
    while(q-punt!=NULL) //errore
    {
     cout<<q->num;
     q=q->num;
    }
    ma mi da errore dicendo che non ho dikiarato q

  6. #6
    Scusa ho letto male.. allora ok, q punta al primo elemento...

    nel while che hai scritto:

    codice:
    while(q->punt!=NULL) // qui ci va un > che tu non avevi messo
    {
     cout<<q->num;
     q=q->punt;  /*qui devi modificare, q->num punta al valore dell'elemento corrente, a te serve reindirizzare q sul prossimo elemento, il cui indirizzo è in q->punt*/
    }

  7. #7
    sisi ok ho sostituito con:
    codice:
        while(q->punt!=NULL)   //qui errore
        {
        cout<<q->num;
        q=q->punt;            
        }
    ma mi da errore dicendo: `q' undeclared (first use this function)

  8. #8
    Allora... q l'hai dichiarato dentro il ciclo while d'inserimento.... il che vuol dire che fuori dal while quella variabile non esiste. Se utilizzi x al posto di q(sono uguali), non ti darà questo problema perche x la dichiari fuori dal while.

  9. #9
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    codice:
    	lista *pp=x;
    	while(pp) 
    	{
    		cout<<pp->num;
    		pp=pp->punt;
    	}
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  10. #10
    scusate, ma non ho capito.
    dovrei cambiare tutto?.

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.