Semplicemente perchè non lo linki....
Tu scorri tutta la lista "l" e se non trovi un "VUOTO" crei un nuovo "nodo" ma come fa la lista a sapere dove puntare???
TipoLista Acquisto(TipoLista l) {
TipoLista last;
printf("\n *** ACQUISTO ***\n\n");
while (l!=NULL) {
if(strcmp(l->auto,VUOTO)==0) {
printf("---Inserisci marca: ");
scanf("%s:",l->auto);
printf("Inserisci modello: ");
scanf("%s:",l->modello);
printf("Inserisci anno: ");
scanf("%s:",l->anno);
l->num=1;
l->pos=0;
printf("\n2Dati inseriti correttamente\n");
return(l);
}
else
{
last=l; ///memorizzo l'ultimo nodo
l=l->next;
}
}
l=malloc(sizeof(struct NodoLista));
printf("Inserisci marca: ");
scanf("%s:",l->marca);
printf("Inserisci modello: ");
scanf("%s:",l->modello);
printf("Inserisci anno: ");
scanf("%s:",l->anno);
l->num=1;
l->pos=0;
l->s=((conta+1)/K);
l->p=((conta+1)%K);
l->next = NULL;
last->next=l;///LINKO
printf("\n3Dati inseriti correttamente\n");
return(l);
}
ho cercato di non modificare il tuo codice in modo che capissi il concetto.Spero migliorerai l'implementazione.