Cita:
Iniciado por sam90 Empeza mostrando lo que estas tratando de hacer.
intene hacerlo como dijist pero no lo acabo de entender. Hice este código, pero no lo ordena, sin embargo me parece correcto.
bool Listalibro::ordenaLibros(int cambio)
{
Clibro *nodo,*nodo2,*nodo3,*aux;
libro lib,libr;
rellenarLista(); // con esta funcion meto los libros en la pila
nodo=lista.inicio;
aux=nodo->obtenerSiguiente();
while(aux!=NULL){
lib=nodo->obtenerDato();
nodo2=nodo->obtenerSiguiente();
libr=nodo->obtenerDato();
nodo3=nodo2->obtenerSiguiente();
if(ComparaPorNumero(lib,libr)==0){
if(nodo==lista.inicio){
nodo->modificaSiguiente(nodo3);
nodo3->modificaAnterior(nodo);
lista.inicio=nodo2;
nodo->modificaAnterior(nodo2);
nodo2->modificaSiguiente(nodo);
nodo->modificaAnterior(inicio);
}
else if(nodo3==NULL){
aux=nodo->obtenerAnterior();
nodo2->modificaAnterior(aux);
aux->modificaSiguiente(nodo2);
nodo->modificaAnterior(nodo2);
nodo->modificaSiguiente(NULL);
}
else aux=nodo->obtenerAnterior();
cambio=1;
}
nodo=nodo->obtenerSiguiente();
aux=nodo->obtenerSiguiente();
if(cambio==1) ordenaLibros(0);
else{
escribirFichero(lista);//escrribe la pila en el fichero.
return 1;
}
}
}