Originariamente inviato da Luciano79
se richiedi di eliminare il nodo 1 allora ptmp rimane uguale a ptop (o A). Non puoi quindi stampare il contenuto di A in quanto non esiste + visto che hai liberato lo spazio a cui puntava. Dovresti quindi far puntare ptop (o A) al nodo 2
Ciao...
Ho pensato di prevedere un caso nel quale si deve eliminare l'elemento che sta in testa, ma cazzo non capisco perche non funziona, il problema è sempre lo stesso! La free non fa il suo lavoro in quanto l'elemento in testa che dovrebbe essere eliminato rimane li!!
codice:
void pop(M_player *ptop, F_player *B){
dbPRINT(ptop,B);
M_player *ptmp=ptop,*A=ptop,*ptFREE=ptop;
int tmp;
scanf("%d",&tmp);
if(ptFREE->id==tmp){
ptFREE=ptmp;
ptmp=ptFREE->next;
printf("----> CANCELLA ELEMENTO DI TESTA: %d, NUOVA TESTA: %d",ptFREE->id, ptmp->id);
}else{
while (ptFREE->id!=tmp){
ptmp=ptFREE;
ptFREE=ptmp->next;
}
ptmp->next=ptFREE->next;
}
free (ptFREE);
dbPRINT(A,B);
}
MI manca la risoluzione di questo problema per la terminazione del programma d'esame..non ci più nulla