Aiuto con una lista

di il
27 risposte

Aiuto con una lista

È la prima volta che vedo le liste,mi è stata data questa lista semplicissima da un prof,ma dev c++ mi dà errore su typedef, dove devo correggere?

#include <cstdlib>
#include <iostream>
using namespace std;
typedef elem* lista;

lista creaLista (int n)
{lista p, p0 = 0;
for (int i = 1; i <= n; i++)
{p = new elem;
cin >> p->info;
p->succ = p0;
p0 = p;
}
return p0;
}

27 Risposte

  • Re: Aiuto con una lista

    Dov'è definito elem?
  • Re: Aiuto con una lista

    È che io non so come si costruisce una lista, ho preso questa come esempio e volevo vedere se funzionasse, tu come mi consigli di corregerla?
  • Re: Aiuto con una lista

    Continua studiare. Prima devi imparare cosa sono le strutture. Poi i puntatori. Una volta imparatociò puoi iniziare le liste lincate che sono una struttura che punta ad un altra struttura andando sempre avanti. Poi le liste bilicate dove puoi tornare anche indietro. Ma se non hai le basi è inutile che ti faccio un esempio dove poi michiederai ma questo cos'è. Gli esercizi con le matrici li hai capite oppure copia/incolla e esame superato?
  • Re: Aiuto con una lista

    Se tu mi sai dire cos'è new, cos'è -> cos'è * ecc e mi fai l'esempio di una struttura allora possiamo inziare a raggionare.
  • Re: Aiuto con una lista

    Sì quelli sì, il problema è che ho letto tutto il capitolo sulle liste, so il significato di struct, nodo ecc..ecc, è solo che sono spiegate veramente male, sai per caso un sito dove potere leggere qualcosa?
  • Re: Aiuto con una lista

    Allora, io so che in una lista vi è un nodo iniziale che punta un altro nodo, ogni nodo è costituito da un puntatore e un'informazione, p-> info significa riempire l'elemento p di un'informazione
  • Re: Aiuto con una lista

    Il vecchio google non mente mai cmq.Ecco a te.

    http://www.disi.unige.it/person/GianuzziV/LP/strutture.html

    poi se sai un po di inglese questo è un sito da mettere nei preferiti e non cancellarlo mai in quanto anche quando si è abbastanza bravi si va a consultarlo:
    http://www.cplusplus.co
  • Re: Aiuto con una lista

    Sì ma la struct l'ho capita, la spiega bene nel mio libro, l'unica cosa che non spiega è l'impostazione di una semplice lista base
  • Re: Aiuto con una lista

    Allora inziamo da capo:
    Una struttura non è altro che una collezione di oggetti di vario tipo (int, char, string ecc) dentro un unica variabile la cui defnizione è:
    
    struct questaStruttura
    {
    int oggetto1;
    long oggetto2;
    char oggetto3;
    .....
    }
    
    come vedi è un collettore di oggetti. quando tu vuoi usare un collettore del genere non fai altro che definirlo così:
    
    questaStruttura miaStruttura;
    miaStruttura.oggetto1 = 5;
    .... ecc
    
    c'è un caso speciale. un puntatore a una struttura dentro la struttura stessa.
    
    struct questaStruttura
    {
    int oggetto1;
    long oggetto2;
    char oggetto3;
    .....
    questaStruttura *next;
    }
    
    
    quel *next significa che il campo next mi punterà (notare l' *) ad un altro collettore dello stesso tipo. esempio:
    
    questaStruttura miaStruttura1;
    miaStruttura1.oggetto1 = 5;
    questaStruttura miaStruttura2;
    miaStruttura2.oggetto1 = 3;
    miaStruttura2.next = &miaStruttura1;
    
    spiegazione: miaStruttura2.next punta all'indirizzo di miaStruttura1.Questo fa si che le due strtture siano collegato tra loro. Se riesci a capire questo allargando un po le idee capisci che questa è la base x creare una lista.
  • Re: Aiuto con una lista

    Ad esempio potrei correggere scrivendo:
    #include <cstdlib>
    #include <iostream>
    using namespace std;
    struct persona
    { char nome[20];
    int età;
    persona* successiva;
    };
    typedef persona* lista;

    lista creaLista (int n)
    {lista p, p0 = 0;
    for (int i = 1; i <= n; i++)
    {p = new elem;
    cin >> p->info;
    p->succ = p0;
    p0 = p;
    }
    return p0;
    }
    int main()
    {const int numero_persone = 10;
    crealista(numero_persone);
    }
  • Re: Aiuto con una lista

    Sì sì,la struct l'ho capita
  • Re: Aiuto con una lista

    OK quasi ci siamo
    
    #include <cstdlib>
    #include <iostream>
    using namespace std;
    
    struct persona
    {	char nome[20];
    	int età;
    	persona* successiva;
    };
    
    typedef persona* lista;
    
    lista creaLista (int n)
    {
    	lista p, p0 = 0;
    
    	for (int i = 1; i <= n; i++)
    	{
    		p = new persona;
    		cin >> p->età;
    		p->successiva = p0;
    		p0 = p;
    	}
    	return p0;
    }
    
    int main()
    {
    	const int numero_persone = 10;
    	creaLista(numero_persone);
    	return 0;
    }
    
    Un po di problemi. dopo l'uscita della funzione creaLista viene persa la testa delle lista cioè p0. Dovresti salvarla da qualche parte. Devi ancora scrivere la funzione distruggiLista. non so se ti hanno insegnato che in C++ ogni volta che usi new dovrebbe esistere anche il corrispettivo delete che rilascia la memoria che hai chiesto in precedenza.
  • Re: Aiuto con una lista

    Grazie tante per l'aiuto, è solo che non mi parte il programma,non mi dà errore ma quando vado su run non parte
  • Re: Aiuto con una lista

    Quello che ti ho messo parte x beninno e non da nessun errore.
Devi accedere o registrarti per scrivere nel forum
27 risposte