Buon pomeriggio.
Sto cercando di scrivere una funzione che data una lista singola disordinata restituisca la lista ottenuta portando l'elemento più grande all'ultimo posto della lista stessa. Sia il prototipo TList list_max_at_end(TList l).
TList list_max_at_end(TList l){
TList temp=l;
int max=temp->info;
TNode *prec=NULL, *max_node;
while(temp->link != NULL){
if(temp->link->info > max){
max=temp->info;
prec=temp;
max_node=temp->link;
}
temp=temp->link;
}
if(prec==NULL){
//TNode *new_max=node_create(max_node->info, NULL);
temp->link=max_node;
max_node->link=NULL;
l=l->link;
}else{
prec->link=max_node->link;
//TNode *new_max=node_create(max_node->info, NULL);
temp->link=max_node;
max_node->link=NULL;
//node_destroy(max_node);
}
return l;
}
Quelle tre istruzioni sono commentate perché avevo provato anche a creare un nuovo nodo e a distruggere il vecchio, ma non cambia niente. Il problema è che mi crasha con un carinissimo segmentation fault.
Ringrazio in anticipo chi mi aiuterà.