Hola de nuevo.
Voy a intentar explicarme mejor:
Tengo una lista enlazada con claves (1->2->3->4->...->NULL)
Cada clave tiene valores pero se apunta al último valor y éste al primero... y finalmente vuelve al último (lista circular).
Ej:
clave: 3
valor: 3.010000
valor: 3.020000
valor: 3.030000
valor: 3.000100
valor: 3.000200
valor: 3.000300
En este caso la clave 3 apunta al valor 3.000300->3.010000->3.020000->...->3.000300
Lo que busco es ordenarlo de menor a mayor, es decir:
clave: 3
valor: 3.000100
valor: 3.000200
valor: 3.000300
valor: 3.010000
valor: 3.020000
valor: 3.030000
Quedando que la clave 3 apunte al valor 3.030000->3.000100->3.000200->...->3.030000
He hecho esto pero está mal:
Código:
void ordenaValores(Tabla *tabla, funcionCompara fvalores){
NodoClave *claveAux;
NodoValor *valorAux, *valorAuxSig;
int fin;
for(claveAux = tabla->primero ; claveAux->siguiente != NULL ; claveAux = claveAux->siguiente){
do {
fin=0;
valorAux=claveAux->ultimo;
valorAuxSig=valorAux->siguiente;
for (valorAux; valorAux!=valorAuxSig; valorAux=valorAux->sig) {
if (fvalores (valorAux->valor, valorAuxSig->valor)<0) {
fin=valorAux->valor; // Uso fin como variable temporal
valorAux->valor=valorAuxSig->valor;
valorAuxSig->valor=fin;
fin=1;
}
}
} while(fin==1);
}
}
Ayuda por favor!!!!
Me estoy volviendo loca!!!