KromKappa ha scritto:
Non funzionava perché la lo zero veniva inizializzato quando creavo la lista
In realtà non valorizzavi neanche uno zero ma un valore casuale.
Ignorare il nodo iniziale non è una soluzione ma un modo per nascondere l'errore del codice.
La creazione della lista può essere semplicemente
elemento *crea_lista(void) {
return NULL;
}
a patto che aggiungi in questo modo
elemento *aggiungi(elemento *lista, int n) {
elemento *coda;
if (lista == NULL) {
elemento *lista = (elemento *)malloc(sizeof(elemento));
lista->valore = n;
lista->successivo = NULL;
}
else
{
coda = lista;
while (coda->successivo != NULL)
coda = coda->successivo;
/* qui t punta all'ultima struttura della lista: ne
creo una nuova e sposto il puntatore in avanti */
coda->successivo = (elemento *)malloc(sizeof(elemento));
coda = coda->successivo;
/* metto i valori nell'ultima struttura */
coda->valore = n;
coda->successivo = NULL;
}
return lista;
}
e nel main la chiami con
if(n%2==0)
lista = aggiungi(lista, n);