04/08/2013, 14:54
|
| | 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
}
} |