Tema: listas en C
Ver Mensaje Individual
  #5 (permalink)  
Antiguo 04/08/2013, 14:54
juanmi_087
 
Fecha de Ingreso: julio-2013
Mensajes: 3
Antigüedad: 11 años, 5 meses
Puntos: 0
Respuesta: listas en C

listo creo que ya esta, la solucion


void enganchar_hijos_a_padres(persona *padre, persona **hijos)
{
persona *ip=NULL, *ih=NULL, *preh=NULL;

ip=padre;
if(ip != NULL)
{
ih=*hijos;
preh=*hijos;
while(ih != NULL)
{
if( !strcmp(padre->nombre,ih->antecesor) ) //si es hijo lo engancho al padre
{
if( ih==*hijos ) //Si hay que desenganchar un nodo de una lista, el primero es un caso especial.
{
*hijos=(*hijos)->sig;
ih->sig=(*ip).sig;
ip->sig=ih;
ip=ih;
ih=*hijos;
preh=*hijos;
}
else
{
preh->sig=ih->sig;
ih->sig=ip->sig;
ip->sig=ih;
ih=preh->sig;
}
}
else {preh=ih; ih=ih->sig;}
}
enganchar_hijos_a_padres(ip->sig , hijos); //paso la lista de padres comenzando desde el siguiente padre
}
}