Que tal, soy nuevo aca.
tengo el siguiente ejercicio crear una función que recibe como parámetro dos listas y engancharas.
Hay dos listas de personas, una de padres y una de hijos.
struct persona{
char nombre[20];
char antecesor[20];
persona *sig;
};
hay que escribir un procedimiento void enganchar(persona *padres, persona **hijos); que cambiase la lista de padres de tal manera que la lista quedara de la siguiente forma: A → 1er hijo de A → 2do hijo de A → B → 1er hijo de B → C → NULL
Es decir, que estén los padres ordenados según el mismo orden que la lista original, pero que entre ellos estén todos los hijos correctos.
codigo de mi funcion:
void enganchar_hijos_a_padres(persona *padres, persona *hijos)
{
persona *aux1=NULL, *aux2=NULL, *aux3=NULL;
aux1=padres;
for(;aux1!=NULL;aux1=aux1->sig)
{
aux2=hijos;
for(;aux2!=NULL;aux2=aux2->sig)
{
if(strcmp(aux1->nombre,aux2->antecesor)==0)
{
aux3=aux1->sig;
aux1->sig=aux2;
aux1->sig->sig=aux3;
}
}
}
}
pero solo logro enganchar un solo hijo por padre. osea si en la lista de hijos hay mas de uno que pertenece a un mismo padre no logro mostrarlo correctamente. en donde falla la logica??
muchas gracias
saludos Juan