I have a double linked list and I want them to be entered in order by date, but I do not see what the error is:
void AgrearE(NodoE **inicioptr,char id[5],char nombre[20],char desc[50],int dia,int mes,int anio)
{
NodoE *Nuevoptr,*aux ;
Nuevoptr=crear_e(id,nombre,desc,dia,mes,anio);
aux=*inicioptr;
if(*inicioptr!=NULL)
{
if(aux->Sigptr==*inicioptr)
{
if(aux->fe.Mes>mes)
{
Nuevoptr->Antptr=aux->Sigptr;
aux->Sigptr=Nuevoptr;
Nuevoptr->Sigptr=aux;
aux->Antptr=Nuevoptr;
}
else
{
if(aux->fe.Mes<mes)
{
Nuevoptr->Sigptr=aux->Antptr;
aux->Antptr=Nuevoptr;
Nuevoptr->Antptr=aux->Sigptr;
aux->Sigptr=Nuevoptr;
*inicioptr=Nuevoptr;
}
else
{
if(aux->fe.Mes==mes)
{
if(aux->fe.Dia<dia)
{
Nuevoptr->Antptr=aux->Sigptr;
aux->Sigptr=Nuevoptr;
Nuevoptr->Sigptr=aux;
aux->Antptr=Nuevoptr;
}
else
{
Nuevoptr->Sigptr=aux->Antptr;
aux->Antptr=Nuevoptr;
Nuevoptr->Antptr=aux->Sigptr;
aux->Sigptr=Nuevoptr;
*inicioptr=Nuevoptr;
}
}
}
}
}
else
{
while(aux->Sigptr!=*inicioptr && aux->fe.Mes<mes)
{
if(aux->Sigptr->fe.Mes<mes)
{
aux=aux->Sigptr;
}
else
{
break;
}
}
if(mes>aux->fe.Mes && aux->Sigptr!=*inicioptr)
{
aux->Antptr->Sigptr=Nuevoptr;
Nuevoptr->Antptr=aux->Antptr;
Nuevoptr->Sigptr=aux;
aux->Antptr=Nuevoptr;
*inicioptr=Nuevoptr;
}
else
{
if(mes<aux->fe.Mes)
{
Nuevoptr->Antptr=aux;
Nuevoptr->Sigptr=aux->Sigptr;
aux->Sigptr->Antptr=Nuevoptr;
aux->Sigptr=Nuevoptr;
}
else
{
if(mes==aux->fe.Mes)
{
if(dia>aux->fe.Dia)
{
aux->Antptr->Sigptr=Nuevoptr;
Nuevoptr->Antptr=aux->Antptr;
Nuevoptr->Sigptr=aux;
aux->Antptr=Nuevoptr;
*inicioptr=Nuevoptr;
}
else
{
Nuevoptr->Antptr=aux;
Nuevoptr->Sigptr=aux->Sigptr;
aux->Sigptr->Antptr=Nuevoptr;
aux->Sigptr=Nuevoptr;
}
}
}
}
}
}
else
{
*inicioptr=Nuevoptr;
}
}