Ver Mensaje Individual
  #8 (permalink)  
Antiguo 05/09/2008, 06:15
una_xikilla
 
Fecha de Ingreso: agosto-2008
Mensajes: 161
Antigüedad: 16 años, 4 meses
Puntos: 0
Respuesta: Invertir lista circular

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ YACKCAE ERES MI HÉROE !!!!!!!!!!!!!!!!!

MUCHÍSIMAS GRACIAS!!!!!!!!!!

Lo he solucionado por fín!!!

He hecho algunos cambios pero la clave me la has dado tú.

Aquí lo dejo por si le interesa a alguien:

int comparaValores( void *c1, void *c2 ) {
if( *(double *)c1 - *(double *)c2 < 0 ) return -1;
else if( *(double *)c1 - *(double *)c2 > 0 ) return 1;
return 0;
}

void ordenaValores(Tabla *tabla, funcionCompara fvalores){
NodoClave *claveAux;
NodoValor *valorAux, *valorAuxSig;
void *elemento;
int fin;


for(claveAux = tabla->primero ; claveAux != NULL ; claveAux = claveAux->siguiente){
do {
fin=0;
for (valorAux=claveAux->ultimo->siguiente; valorAux!=claveAux->ultimo; valorAux=valorAux->siguiente) {
valorAuxSig=valorAux->siguiente;
if (fvalores (valorAux->valor, valorAuxSig->valor)>0) {
elemento=valorAux->valor;
valorAux->valor=valorAuxSig->valor;
valorAuxSig->valor=elemento;
fin=1;
}
}
} while(fin==1);

}
}