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.
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;
};
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.
Grazie in anticipo.