Sono riuscito a farlo funzionare, avete idee per migliorarlo?
codice:
/*effettua cancellazione elemento*/
bool lista::cancella(int x)
{
nodo *s;
l=eliminaprimo(l,x);
s=l;
eliminacentro(l,x);
l=s;
};
nodo* lista::eliminaprimo(nodo* l, int val) //elimina in modo ricorsivo i primi se sono uguali
{
if (val == l->valore){
l=l->succ;
if(l!=NULL){
return eliminaprimo(l, val);
}
};
return l;
};
nodo* lista::eliminacentro(nodo* l, int val) //elimina elementi dopo il primo
{
if(l!=NULL && l->succ!=NULL)
if (val == l->succ->valore){
l->succ=l->succ->succ;
return eliminacentro(l, val);
};
};