Hola amigos ,vereis tengo un problema , tengo una lista enlazada con un dato que es un ano dentro y
quiero ordenarla por ese año de menor a mayor , el dato se va leyendo de un fichero dato a dato y
tengo un insertar en la lista enlazada que lo que hace es ordenar segun voy insertando el problema que tengo
es que me lo ordena todo bien menos el primer elemento que directamente no lo ordena el codigo que tengo es el siguente:
Código:
struct dado {
int ano;
struct dado *sig;
};
typedef struct dado dados;
dados* dado2;
//nserta ordenando por ano
dados* insertar(int anos,dados* lista){
dados *listaNueva,*listaAux;
listaNueva=(dados* )malloc(sizeof(dados));
if(listaNueva!=NULL){
listaNueva->ano=anos;
listaNueva->sig=NULL;
if(lista==NULL){
lista=listaNueva;
}else{
listaAux=lista;
while(listaAux->sig && listaAux->sig->ano < anos){
listaAux=listaAux->sig;
}//cierre while
listaNueva->sig=listaAux->sig;
listaAux->sig=listaNueva;
}//cierre del else
}
return lista;
}
el problema que tengo es que si de el fichero me leen los datos que son :
2012,2011,2006,1968 entre otros
y el resultado me sale 2012,1968,2006,2011
es decir me lo ordena todo bien menos el primer elemento y no se porque no ordena bien el primer elemento simplemento
lo que hace en el primer elemento es poner en la lista el primer elemento que lee y no se porque pasa eso