Ho modificato il codice:

codice:
//Versione ricorsiva del ricerca     
void lista::ricerca(char* cogn){
static puntnodo temp=l;
if(temp==0)cout<<"L'elemento non e' presente nella lista!\n";
else if(!strcmp(temp->cognome,cogn)){
                 cout<<"Il numero dell'utente "<<temp->cognome;
                 cout<<" e' "<<temp->telefono<<"\n";
                 }
                 else {
                       temp=temp->punt;
                       ricerca(cogn);
                       }
                 }
Così mi funziona...prima non funzionava se:

1)Cercavo un elemento che non era presente nella lista(non c'era nessuna condizione temp==0)Grazie a te...
2)Cercavo un elemento che non stesse in testa alla lista(il motivo penso sia lo static)Grazie e a te...

Ti ringrazio...secondo te ora va bene??e più che altro secondo te ho risposto alla domanda della traccia=???