nonostante il thread sia vecchio di più di otto anni, provo lo stesso...
- ti crei un vettore di puntatori(agli elementi della lista) e ci scrivi dentro gli indirizzi degli elementi della lista, così com'è, visitandola semplicemente (complessità lineare)
- ordini il vettore di puntatori (complessità = complessità dell'algoritmo di ordinamento)
- modifichi i puntatori della lista visitando uno ad uno gli elementi così come sono ordinati nel vettore (complessità lineare, c'è solo da modificare un paio di puntatori ogni elemento)
ho fatto senza problemi i primi due punti..ma ho dei problemi nel modificare i puntatori della lista..

ho fatto una funzione del genere
Codice PHP:
void AdjustList(node* *p,char* *a){
     if (*
!= NULL){
         
node **nxt = &((*p)->next);
         *
= (node*) *a;
         (*
p)->next = *nxt;
         
AdjustList(nxt1);
     }
     return;

una funzione che prende la lista (come puntatore di puntatore a nodo (per modificare il puntatore))
e l'array di puntatori.. nella visita salvo il successivo corrente poi cambio l'indirizzo del nodo corrente con quello ordinato nell'array, nel successivo del nodo appena cambiato vado a mettere il successivo salvato precedentemente, per non saltare nodi, e richiamo ricorsivamente la funzione...
l'output è un segmentation fault..cosa sbaglio?? lo scopo è puramente didattico, per prendere mano con i puntatori.