Il confronto nel while interno ovviamente va fatto su temp e temp->succ,non au aux, visto che stai scorrendo temp e non aux.
Comunque sbagli a scorrere la lista.Perchè lo confronti sempre con p, che è il primo?![]()
L' ordinamento deve essere dinamico, devi confrontare gli elementi adiacenti, perchè confrontarlo sempre col primo elemento?
Scorri la lista così:
codice:void ordine(struct elemento *p) { int valore; struct elemento *aux,*temp; aux=p; while(aux->succ!=NULL) { temp=aux; while(temp->succ!=NULL) { {...} // fai il confronto tra temp e temp->succ temp=temp->succ; } aux=aux->succ; } }

Rispondi quotando