Potresti usare una funzione tipo:
void eliminaNodo(L& nodo){
if (nodo==0) return;
L p=nodo;
nodo=nodo->next;
delete p;
}
per eliminare il nodo. Inoltre potresti usare una funzione di ricerca per trovarti il nodo da eliminare in base ad un valore:
L* ricercaNodo(L& p,int num){
if (p==0)return 0;
if (p->int!=num) return ricercaNodo(p->next,num);
else return &p;
}
Questa funzione ha come parametro un nodo passato per riferimento e il valore da cercare. esso ritornerà un valore nullo se non esesistono nodi con il valore da cercare, oppure l'indirizzo di memoria del nodo da cancellare. In questo modo puoi cancellare un nodo dato un valore in questo modo:
bool removeFromList(int num){
L* p=ricercaNodo(testa,num);
if (p==0)return false;
eliminaNodo(*p);
return true;
}
Con il valore di ritorno puoi così verificare se è stato davvero eliminato il nodo corrispondente al valore.
Anche se sono un normale utente, spero che ti sia stato di aiuto.