Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Temas - spectrumni

#1
hola como estan tengo una duda ojala me ayuden c: lo que pasa es que me pusieron un trabajo en lenguaje c sobre listas dobles, y voy en la funcion mostrar, la cuestion es que si compila sin ningun error ni nada, pero cuando creo la lista y le meto los datos hasta hay todo bien, pero cuando los quiero mostrar con la funcion MostrarLista no muestra nada y nisiquiera explota ni nada solo me vuelve a mostrar el menu, este es el programa que llevo hasta el momento, no estoy pidiendo el programa completo, solo que me ayuden con la funcion mostrar que no me muestra la lista, gracias.

Código (GeSHi) [Seleccionar]

#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",&registro->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 (GeSHi) [Seleccionar]

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;
}