Visualizzazione dei risultati da 1 a 6 su 6

Discussione: [C++]Problema liste

  1. #1

    [C++]Problema liste

    sto cercando di implementare una lista ma questo codice nn mi va
    codice:
     
    #include <iostream>
    #include <string>
    #include <cmath>
    
    using namespace std;
    
    typedef struct Ls
    {
        string irq;
        Ls *next;
    }Lista;
    
    int main()
    {
        Lista *primoel, *prima, *seconda, *terza;
        primoel = prima;
        prima->irq = 9;
        seconda->irq = 8;
        terza->irq = 7;
        prima->next = seconda;
        seconda->next = terza;  
        // cerca 
        Lista *cercare = primoel;
        const unsigned indicenodo = 2;
        for(unsigned i=0; i < indicenodo; i++)
        {
           cercare = cercare->next;    
        }
        cout << cercare->irq;
        return 0;
    }
    Tnk 1k
    La stupidità umana e l'universo sono infinite.
    Della seconda non sono certo(Einstein)

    Gnu/Linux User

  2. #2
    risolto:
    codice:
     
    #include <iostream>
    #include <string>
    #include <cmath>
    #include <cstdio>
    
    using namespace std;
    
    typedef struct SList
    {
        int irq;
        SList *next;    
    }Lista;
    
    int main( )
    {
        Lista *primoel, *prima, *seconda, *terza, *quarta;
        primoel = prima;
        prima->irq = 9;
        seconda->irq = 8;
        terza->irq = 7;
        quarta->irq = 6;
        prima->next = seconda;
        seconda->next = terza; 
        terza->next = quarta; 
        // cerca 
        Lista *cercare = primoel;
        const unsigned indicenodo = 3;
        for( unsigned i=0; i < indicenodo; i++ )
        {
           cercare = cercare->next;    
        }
        cout << cercare->irq << "\n";
        system( "PAUSE" );
        return 0;
    }
    La stupidità umana e l'universo sono infinite.
    Della seconda non sono certo(Einstein)

    Gnu/Linux User

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2002
    Messaggi
    207
    allora premetto che io non conosco bene il c++ cmq in questo caso e' quasi uguale al codice in C.....
    A occhi ho visto alcuni errori:
    nella struct ls:
    struct Ls{
    string irq;
    struct Ls *next;
    }Lista;
    poi per prima cosa devi allorare della memoria per la lista, cioe' di per se
    primoel = prima;
    non vuol dire nulla dato che sono entrambi puntatori a NULL....quindi devi allocare la memoria per le liste.....in C si usa una malloc in C++ c'e' new che e' piu' veloce....
    e lo stesso devi fare ogni volta che crei un elemento della lista....il puntatore *next serve proprio a tener memoria dell'indirizzo dove si trova l'elemento della lista.
    sempre a occhi il codice dovrebbe essere:
    codice:
    #include <iostream>
    #include <string>
    #include <cmath>
    
    using namespace std;
    
    struct Ls
    {
        string irq;
       struct Ls *next;
    };
    
    typedef struct Ls NodoLista
    typedef NodoLista * Lista
    
    
    int main()
    {
        Lista primoel, prima, seconda, terza;
        primoel = new NodoLista;
        prima = primoel;
        prima->irq = "9";
        prima->next = new NodoLista;
        seconda = prima->next;
        seconda->irq = "8";
        seconda->next = new NodoLista;
        terza = seconda->next;
        terza->irq = "7";  
        terza->next = NULL;
        // cerca 
        Lista cercare = primoel;
        const unsigned indicenodo = 2;
        for(unsigned i=0; i < indicenodo; i++)
        {
           cercare = cercare->next;    
        }
        cout << cercare->irq;
        return 0;
    }
    ho cercato di rimanere il piu' possibile vicino al tuo codice....puo' anche essere che abbia fatto qualche errore dato che non conosco bene il c++ ma il concetto e' questo.
    Devi:
    -allocare
    -riempire i campi
    -allocare un altro nodo nel puntatore next oppure metterlo a NULL x indicare la fine della lista.
    Spero di essere stato chiaro....sulle lista cmq c'e' tantissimo altro da dire ci sono algoritmi per inserimenti in testa, in coda, inserimenti ordinati...cancellazione di elementi e molto altro....

  4. #4
    codice:
     
    #include <iostream>
    #include <string>
    #include <cmath>
    #include <cstdio>
    
    using namespace std;
    
    typedef struct SList
    {
        int irq;
        SList *next;    
    }Lista;
    
    int main( )
    {
        Lista *prima, *seconda, *terza, *quarta;
        prima->irq = 9;
        seconda->irq = 8;
        terza->irq = 7;
        quarta->irq = 6;
        prima->next = seconda;
        seconda->next = terza; 
        terza->next = quarta; 
        quarta->next = NULL;
        Lista *primoel = prima;
        // cerca 
        Lista *cercare = primoel;
        const unsigned indicenodo = 1;
        for( unsigned i=0; i < indicenodo; i++ )
        {
           cercare = cercare->next;    
        }
        cout << cercare->irq << "\n";
        system( "PAUSE" );
        return 0;
    }
    Ma mi da errore di debug
    La stupidità umana e l'universo sono infinite.
    Della seconda non sono certo(Einstein)

    Gnu/Linux User

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2002
    Messaggi
    207
    in questo codice che posti tu c'e' proprio un errore di logica....le liste non sono cosi'....

  6. #6
    Originariamente inviato da frog831
    in questo codice che posti tu c'e' proprio un errore di logica....le liste non sono cosi'....
    ora va
    codice:
     #include <iostream>
    #include <string>
    #include <cmath>
    #include <cstdio>
    
    using namespace std;
    
    typedef struct SList
    {
        int irq;
        SList *next;    
    }Lista;
    
    int main( )
    {
        Lista prima, seconda, terza, quarta, quinta;
        /* definisco */
        prima.irq = 9;
        seconda.irq = 8;
        terza.irq = 7;
        quarta.irq = 6;
        quinta.irq = 5;
        /* concateno creando la lista*/
        prima.next = &seconda;
        seconda.next = &terza; 
        terza.next = &quarta;
        quarta.next = &quinta;
        quinta.next = NULL; // ultimo anello nullo, coi la lista e finita
        Lista *primoel = &prima;
        // cerca 
        Lista *cercare = primoel;
        const unsigned indicenodo = 4;
        for( unsigned i=0; i < indicenodo; i++ )
        {
           cercare = cercare->next;    
        }
        cout << cercare->irq << "\n";
        system( "PAUSE" );
        return 0;
    }
    La stupidità umana e l'universo sono infinite.
    Della seconda non sono certo(Einstein)

    Gnu/Linux User

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.