Scusami per la poca leggibilità del codice ma e solo una bozza per vedere se la funzione fa cio che voglio, cmq ti ringrazio lo stesso e credo di aver risolto con un altro approccio...alla fine ho fatto questo e sembra funzionare
void LISTALIB::EliminaLibro(N e){
Lista_Lib * t=n;
Lista_Lib * prec=NULL;
Lista_Lib * curr;
bool trovato=false;
if (strncmp(t->elem.Cognome,e,100)==0)
{
n=n->next;
free (t);
}
else
{
while (t && !trovato)
{
if (strncmp(t->elem.Cognome,e,100)==0)
{
prec->next=t->next;
free (t);
trovato=true;
}
else
{
prec=t;
t=t->next;
}
}
}if(!trovato)
cout<<"Libro non trovato"<<endl;
}