/* copiare gli elementi di una lista in una nuova lista, senza ripetizioni L'algoritmo utilizza la funzione trovato( lista l, int x) che restituisce 1 se trovato x in l, 0 se non trovato. */ lista distinti( lista l ) { lista new = NULL; puntatore coda = NULL, p; while( l != NULL ) { if( !trovato(new, l->dato) ) { p = newNode(); p->dato = l->dato; p->next = NULL; if( coda == NULL ) new = coda = p; else coda = coda->next = p; } l = l->next; } return new; } /* risolviamo lo stesso problema con una funzione listacpy che copia da una lista in una seconda lista, solo i numeri distinti */ void listaCpy( lista *new, lista l ) { puntatore coda = NULL; while( l != NULL ) { if( !trovato(*new, l->dato) ) { p = newNode(); p->dato = l->dato; p->next = NULL; if( coda == NULL ) *new = coda = p; else *coda = (*coda)->next = p; } l = l->next; } }