Código
#include <stdio.h> #include <stdlib.h> struct lista{ //estructura int dato; struct lista *sig; struct lista *ant; }; typedef struct lista nodo; int menu(void); nodo *CrearLista(nodo *registro); void MostrarLista(nodo *registro); main(){ nodo *prin; int op; do{ system("cls"); op=menu(); switch(op){ case 1: prin=(nodo *)malloc(sizeof(nodo)); prin=CrearLista(prin); break; case 2: MostrarLista(prin); break; case 3: case 4: case 5: printf("hasta luego\n"); default: getch(); } }while(op != 5); getch(); } int menu(void){ int opcion; do{ printf("1. Crear Lista\n"); printf("2. Mostrar Lista\n"); printf("3. Insertar en Lista\n"); printf("4. Borrar dato\n"); printf("5. Salir\n"); printf("Ingrese la Opcion: "); scanf("%d",&opcion); if(opcion<1 || opcion>5) printf("opcion no valida\n"); }while(opcion<1 || opcion>5); return(opcion); } nodo *CrearLista(nodo *registro){ registro->ant=NULL; while(registro->sig != NULL){ printf("Introducir dato (introducir 0 para terminar): "); scanf("%d",®istro->dato); if(registro->dato == 0){ registro->sig = NULL; printf("lista creada"); getch(); } else{ registro->sig=(nodo *)malloc(sizeof(nodo)); registro->sig->ant=registro; registro=registro->sig; } } return(registro); } void MostrarLista(nodo *registro){ while(registro->sig != NULL){ printf("%d", registro->dato); registro=registro->sig; } return; }
EDIT:
weno gracias ferno por ayudarme lo he solucionado con este codigo en la funcion mostrar c:
Código
void MostrarLista(nodo *registro){ while(registro->ant != NULL)registro=registro->ant;//rewind while(registro->sig != NULL){ printf("%d", registro->dato); registro=registro->sig; } getch(); return; }