PDA

View Full Version : C lista coma la ordino?


TorpedoBlu
21-04-2006, 12:01
ciao ho una lista


typedef char key;

struct list{
int X;
struct list*next, *prev;
};

ho un centinaio di elementi in lista (concatenata in maniera doppia next\prev)

vorrei ordinarla in base alle X, ma non riesco ad applicare un algo di ordinamento... come fare? e non parlo di ordinare modificando le X, in quanto i puntatori a tale lista devono muoversi e non i loro campi..


help!

71104
21-04-2006, 12:18
di algoritmi di ordinamento ce ne sono tanti, scegline uno; per spostare un elemento basta che lo "sganci" dal precedente e dal successivo e lo "riagganci" dove deve stare.

TorpedoBlu
21-04-2006, 21:19
di algoritmi di ordinamento ce ne sono tanti, scegline uno; per spostare un elemento basta che lo "sganci" dal precedente e dal successivo e lo "riagganci" dove deve stare.

si ma tutti gli algo di ordinamento prendono in input un array, e per le liste modificano i campi, ma io ho bisogno di spostare i puntatori.. per fare questo a questo punto svuoto la lista travasandola in un altra ordinando in fase di inserimento..ma non è bellissimo

71104
22-04-2006, 00:40
si ma tutti gli algo di ordinamento prendono in input un array, e per le liste modificano i campi, ma io ho bisogno di spostare i puntatori.. per fare questo a questo punto svuoto la lista travasandola in un altra ordinando in fase di inserimento..ma non è bellissimo fai così: anziché scambiare i campi tra due nodi scambia i puntatori di quei due nodi e degli eventuali nodi successivo e precedente ad essi agganciati :)