Salve, chiedo un aiuto riguardo a questo pezzo di codice di un programma che carica una lista in coda e che deve eliminare l'elemento max, la traccia dell'esercizio mi limita a scorrere la lista una sola volta...
Quando avvio il programma e digito una semplice lista "1,2,3,4,5", mi vede come max=1 e mi stampa la lista modificata come "2,3,4,5".
Potete aiutarmi?
struct elem* elimina(struct elem *top){
struct elem *c=top, *pre_elem, *pre, *tmp;
int max=0;
if(c->valore>max){
max=c->valore;
tmp=c;
}else{
c=top->next;
pre=top;
while(c!=NULL){
if(c->valore>max){
max=c->valore;
pre_elem=pre;
tmp=c;
}
pre=c;
c=c->next;
}
}
if(tmp==top){
top=tmp->next;
free(tmp);
}
if(tmp!=top){
pre_elem->next=tmp->next;
free(tmp);
}
printf("Max: %d", max);
return top;
}