I valori 'anomali' che hai segnalato erano dovuti al fatto che cancellavi i nodi ma dopo non collegavi quelli dispari tra di loro .
Ecco il codice della funzione modificato .![]()
codice:Tipo_lista cancella_tutti_pari(Tipo_lista l) { Tipo_lista Prec, Succ,Tmp; // inserita una nuova variabile Tmp Prec = NULL; Succ = l; if (Succ == NULL) return l; while (Succ != NULL) { if (Prec !=NULL) // modifica Tmp = Prec; // modifica if (Succ->Value %2 == 0) { Tipo_lista Temp = NULL; if (Prec == NULL) { Temp = l; l = Succ->Next; } else { Temp = Succ; Succ = Succ->Next; } free(Temp); // modifica Tmp->Next = Succ; // modifica } else { Prec = Succ; Succ = Succ->Next; } } return l; }

Rispondi quotando