Vins3Xtreme ha scritto:
La lista non viene ordinata a causa della definizione della funzione di ordinamento:
void Ordina(L l); //E' come se scrivessi 'void Ordina(struct Nodo *l);
In C le variabili alle funzoni vengono passate solo per 'valore' (non abbiamo come il C++ situazioni come 'void Ordina(L &l)' ). infatti quando si passa ad una generica funzione un puntatore, viene 'istanziato' ex novo un puntatore temporaneo con il 'valore' di quello passato alla funzione stessa. Per cui, nel caso il valore del puntatore (e non il valore del dato puntato, occhio eh) viene modificato nella funzione, lo stesso non accade al puntatore usato come parametro di input, dato che in pratica sono due variabili distinte e separate. un esempio:
Ciao Vins3Xtreme,
il ragionamneto non fà una grinza ed è stato la prima cosa che ho pensato pure io. Pero se guardi bene l' algoritmo di sort non scambia i puntatori ma scambia in testo contenuto nei nodi. E quindi funziona.
Lo scambio dei puntatori sarebbe indubbiamente più efficiente, ma trattandosi di un esercizio scolastico direi che può andare bene cosi. (a meno che tittadomi non punti a voti altissimi nel qual caso riapriamo il discorso).