elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Únete al Grupo Steam elhacker.NET


  Mostrar Temas
Páginas: [1]
1  Programación / Programación C/C++ / funcion mostrar lista doble lenguaje c en: 26 Enero 2012, 23:06 pm
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
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. struct lista{ //estructura
  5. int dato;
  6. struct lista *sig;
  7. struct lista *ant;
  8. };
  9.  
  10. typedef struct lista nodo;
  11.  
  12. int menu(void);
  13. nodo *CrearLista(nodo *registro);
  14. void MostrarLista(nodo *registro);
  15.  
  16.  
  17. main(){
  18. nodo *prin;
  19. int op;
  20.  
  21. do{
  22. system("cls");
  23. op=menu();
  24. switch(op){
  25. case 1:
  26. prin=(nodo *)malloc(sizeof(nodo));
  27. prin=CrearLista(prin);
  28. break;
  29.  
  30. case 2:
  31. MostrarLista(prin);
  32. break;
  33.  
  34. case 3:
  35.  
  36. case 4:
  37.  
  38. case 5:
  39. printf("hasta luego\n");
  40.  
  41. default:
  42. getch();
  43. }
  44. }while(op != 5);
  45. getch();
  46. }
  47.  
  48. int menu(void){
  49. int opcion;
  50. do{
  51. printf("1. Crear Lista\n");
  52. printf("2. Mostrar Lista\n");
  53. printf("3. Insertar en Lista\n");
  54. printf("4. Borrar dato\n");
  55. printf("5. Salir\n");
  56. printf("Ingrese la Opcion: ");
  57. scanf("%d",&opcion);
  58. if(opcion<1 || opcion>5)
  59. printf("opcion no valida\n");
  60. }while(opcion<1 || opcion>5);
  61. return(opcion);
  62. }
  63.  
  64. nodo *CrearLista(nodo *registro){
  65. registro->ant=NULL;
  66. while(registro->sig != NULL){
  67.  
  68. printf("Introducir dato (introducir 0 para terminar): ");
  69. scanf("%d",&registro->dato);
  70. if(registro->dato == 0){
  71. registro->sig = NULL;
  72. printf("lista creada");
  73. getch();
  74. }
  75. else{
  76. registro->sig=(nodo *)malloc(sizeof(nodo));
  77. registro->sig->ant=registro;
  78. registro=registro->sig;
  79. }
  80. }
  81. return(registro);
  82. }
  83.  
  84. void MostrarLista(nodo *registro){
  85. while(registro->sig != NULL){
  86. printf("%d", registro->dato);
  87. registro=registro->sig;
  88. }
  89. return;
  90. }

EDIT:

weno gracias ferno por ayudarme lo he solucionado con este codigo en la funcion mostrar c:

Código
  1. void MostrarLista(nodo *registro){
  2.     while(registro->ant != NULL)registro=registro->ant;//rewind
  3.     while(registro->sig != NULL){
  4.                         printf("%d", registro->dato);
  5.                         registro=registro->sig;
  6.     }
  7.     getch();
  8.     return;
  9. }
  10.  
  11.  
Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines