En este mismo ejercicio he añadido la opción insertar después de un nodo determinado, lo he probado, pero no me acaba de funcionar. Alguien puede decirme si el subprograma tiene algún fallo?. Gracias
Código C:
Ver originalvoid alta_despues_de(struct persona **lista){
struct persona *nuevo_nodo;
struct persona *nodo_aux;
char nom[100];
char edad[3];
int encontrado = 0;
printf("Nombre a buscar para insertar después de el: ");
nuevo_nodo
=(struct persona
*)malloc(sizeof(struct persona
));
if(nuevo_nodo != NULL){
nodo_aux = *lista;
while((nodo_aux->siguiente != NULL) && (!encontrado)){
if(strcmp(nom
,nodo_aux
->nom
) == 0) encontrado = 1;
else{
nodo_aux = nodo_aux->siguiente;
}
}
if((nodo_aux->siguiente == NULL) && (!encontrado))
if(strcmp(nom
,nodo_aux
->nom
) == 0) encontrado = 1;
if(encontrado){
nuevo_nodo->siguiente=nodo_aux->siguiente;
nodo_aux->siguiente=nuevo_nodo;
printf("Nombre del nuevo elemento: "); scanf("%99s",nuevo_nodo
->nom
); }
else{
printf("Elemento no encontrado.\n"); }
}
printf("Edad a buscar para insertar después de el: "); nuevo_nodo
=(struct persona
*)malloc(sizeof(struct persona
));
if(nuevo_nodo != NULL){
nodo_aux = *lista;
while((nodo_aux->siguiente != NULL) && (!encontrado)){
if(strcmp(edad
,nodo_aux
->edad
) == 0) encontrado = 1;
else{
nodo_aux = nodo_aux->siguiente;
}
}
if((nodo_aux->siguiente == NULL) && (!encontrado))
if(strcmp(edad
,nodo_aux
->edad
) == 0) encontrado = 1;
if(encontrado){
nuevo_nodo->siguiente=nodo_aux->siguiente;
nodo_aux->siguiente=nuevo_nodo;
printf("Edad del nuevo elemento: "); scanf("%2s",nuevo_nodo
->edad
); }
else{
printf("Elemento no encontrado.\n"); }
}
}