/*Completa el código de la función
mostrar_lista_inversa() para que reciba un
puntero al último elemento de la lista y
la muestre por pantalla desde el último al
primer elemento, es decir, en orden inverso
*/
#include<stdio.h>
/*typedef struct{
char nombre[30];
int edad;
registro *siguiente;
}registro; *///ESTO ES IMPOSIBLE
struct elemento_lista{
char nombre[30];
int edad;
struct elemento_lista *siguiente;
struct elemento_lista *anterior;
};
//Defino un nuevo tipo de dato al que llamare
//nodo
typedef struct elemento_lista nodo;
void mostrar_lista_inversa(nodo *final){
}
void mostrar_lista(nodo *principio){
nodo *registro;
registro=principio;
int cont=1;
char seguir='s';
printf("\n****CONTENIDO DE LA LISTA DE MIS AMIGOS****");
do{
printf("\nAMIGO %d",cont++);
printf("\nNombre: %s",registro->nombre);
printf("\nEdad: %d",registro->edad);
if(registro->siguiente!=0)
registro=registro->siguiente;
else{
printf("\nFIN DE LA LISTA");
seguir='n';
}
}while(seguir=='s');
return;
}
nodo *enlazar_lista(nodo *principio){
int cont=1;
char seguir='s';
nodo *registro, *aux_anterior,*final;
registro=principio;
aux_anterior=0;
do{
printf("\n***Amigo %d***",cont++);
printf("\nNombre: ");
scanf(" %[^\n]",registro->nombre);
printf("\nEdad: ");
scanf("%d",®istro->edad);
printf("\nDeseas tener un nuevo amigo (s/n): ");
scanf(" %c",&seguir);
if(seguir=='s')
registro->siguiente=(nodo *)malloc(1*sizeof(nodo));
else{
final=registro;
registro->siguiente=0;
printf("\nLista enlazada finalizada");
}
registro->anterior=aux_anterior;
aux_anterior=registro;
registro=registro->siguiente;
}while(seguir=='s');
return(final);
}
main(){
nodo *registro,*principio,*final;
registro=(nodo *) malloc(1*sizeof(nodo));
principio=registro;
final=enlazar_lista(principio);
mostrar_lista(principio);
mostrar_lista_inversa(final);
getchar();
getchar();
}
No hay comentarios:
Publicar un comentario