int valore_massimo_lista(plist p){
int massimo;
if(p==NULL) return 0; // A)
massimo=p->info; // B) il primo è il massimo di partenza
while (p!=NULL) {
if (p->info > massimo)
massimo = p->info;
p = p->next;
}
return massimo;
}
Io proverei ad aggiungere il controllo sul primo elemento (te lo chiede l'esercizio), vedi commento A)
Poi di sicuro inizializzerei massimo con il primo valore, vedi commento B)
Dubito che questo risolva l'errore, ma è più corretto...