Prova così , dovrebbe andare , però se non capisci qualche passaggio chiedimeli perchè tengo più che tu capisca l' algoritmo .
void elimina ( L & l )
{
if ( l == 0 )
return;
else
doppioni(l->next,l->val);
}
void cancella ( L & l , L & prossimo ) {
L punt = l;
l = prossimo;
delete punt;
}
void doppioni( L & l , int valore ){
if ( l != 0)
{
if ( l->val == valore )
{
cancella ( l , l->next );
doppioni ( l, valore );
}
else
doppioni( l->next, l->val);
}
}