Ciao a tutti, stavo cercando di svolgere il seguente esercizio
[testo: data una lista linkata semplice, eliminare tutti gli elementi duplicati consecutivi, senza cambiarne l'ordine relativo
esempio: AAA CCC BBB AAAA diventa A C B A].
Ho preso spunto dalla cancellazione ricorsiva del Sedgewick (Algoritmi in C, III edizione, Pearson, 2002)
Qualcuno può dirmi dove sbaglio nella ricorsione? Ho fornito gli output nell'ultima riga.
Grazie.
//struttura dati
typedef struct node* link;
struct node{ int data; link next;};
//funzione ricorsiva
void DELETEDUPS(link h){
if(!(h->next)) return; //lista vuota
if(h->data==h->next->data){ //condizioni per cancellazione
link t = h->next;
h->next = h->next->next;
free(t);
}
DELETEDUPS(h->next); //ricorsione
return;
}
//input 1-->1-->1-->2-->2-->3-->4-->4-->4-->NULL
//output 1-->1-->2-->3-->4-->4-->NULL