Questa è una versione funzionante della tua lista, che come commento ha dove sbagli:
codice:
#include <stdio.h>
#include <stdlib.h>
struct mp3 {
int id;
struct mp3 *punt;
};
struct mp3 *crealista (int, struct mp3*);
void visualizza (struct mp3*);
int main() {
struct mp3 *puntLista = NULL;
int n, i, id;
n = 5;
for (i = 0; i < n; i++) {
printf ("Inserisci il %d numero: ", i + 1);
fflush (stdin);
scanf ("%d", &id); /* indirizzo della variabile */
puntLista = crealista (id, puntLista); /* punto alla nuova struttura */
}
visualizza (puntLista);
return (0);
}
struct mp3 *crealista (int number, struct mp3 *testa) {
struct mp3 *p;
p = (struct mp3 *) malloc (sizeof (struct mp3));
p -> id = number; /* metto il numero */
p -> punt = testa; /* metto il vecchio indirizzo della struct */
return (p); /* ritorno il nuovo indirizzo della struttura */
}
void visualizza (struct mp3* list) { /* visualizzo, passando il punt per indirizzo, tanto nn devo ritornare nada :) */
while (list) {
printf ("%d \n", list -> id);
list = list -> punt;
}
}
Ciao!