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.