Salve a tutti ,avrei bisogno di una mano per capire un problema. Sto scrivendo un programma per capire la logica delle liste in C (visto che è un argomento appena trattato a lezione). Questo programma deve semplicemente creare una lista concatenata semplice, aggiungendo in coda degli int che introduco da tastiera. L'unica cosa che non riesco, credo, a far funzionare è l'aggancio del nodo precedente a quello successivo appena creato.
Non riesco a vedere l'errore; in pratica crea il nodo in testa alla lista, infatti stampa il primo valore, ma a quanto pare non collega gli altri nodi successivamente creati. C'è qualche problema nel for della funzione 'insert', dove dorebbe avvenire il collegamento del nodo.codice:#include <stdio.h> #include <stdlib.h> typedef struct nodo { int val; struct nodo *next; }n, *pt_n; pt_n newNode (int d, pt_n next); pt_n insert (pt_n testa,int val); /************************************************/ int main(int argc, const char * argv[]) { int val=0, i=0; pt_n testa=NULL; pt_n leggi=NULL; while (i<6) { printf("Inserisci Valore "); scanf("%d",&val); testa=insert(testa,val); i++; } for (leggi=testa; leggi!=NULL; leggi=leggi->next) { printf("Stampa lista %d\n", leggi->val); } return 0; } /************************************************/ pt_n newNode (int r, pt_n next) { pt_n x=malloc(sizeof(x)); if (x==NULL) return NULL; else { x->val = r; printf("- valore nel nodo %d\n", r); x->next = next; } return x; }; /************************************************/ pt_n insert (pt_n testa, int val) { pt_n tmp; if (testa==NULL) { return newNode(val, NULL); } else { for (tmp=testa; tmp->next!=NULL; tmp=tmp->next){ tmp->next = newNode(val, NULL); }} return testa; };
Grazie in anticipo.

Rispondi quotando
