Ciao. Innanzitutto grazie per la risposta.
Scusatemi per non aver utilizzato i tag ma non lo sapevo.
Hai ragione quando dici che il problema è sulla funzione ordina, infatti, come dici tu, all'ultima iterazione punta alla coda della lista che non ha un nodo prossimo.
Alla fine ho capito cosa mancava: far partire temp dalla testa della lista all'inizio di ogni iterazione del ciclo for esterno. Inoltre,l'istruzione temp=temp->next andava va messa alla fine del primo ciclo for.
Posto il codice della funzione ordina corretto:
codice:
void ordina(polinomio *list) {
polinodo *temp;
temp=list->header;
double c;
unsigned int e;
cout<<list->count<<endl;
for(int i=0;i<(list->count);i++) {
for(int j=0;j<(list->count)-1;j++) {
if(temp->espon<temp->next->espon) {
c=temp->coeff;
e=temp->espon;
temp->espon=temp->next->espon;
temp->coeff=temp->next->coeff;
temp->next->coeff=c;
temp->next->espon=e;
}
temp=temp->next;
}
temp=list->header;
}
}