05/09/2008, 06:15
|
| | 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);
}
} |