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

 

 


Tema destacado: Curso de javascript por TickTack


  Mostrar Mensajes
Páginas: [1]
1  Programación / Programación C/C++ / Re: funcion mostrar lista doble lenguaje c en: 26 Enero 2012, 23:39 pm
Antes que nada, todo código que postees ponlo dentro de las etiquetas GeSHi así es más legible.
Estuve viendo un poco, y creo que tu problema particular se da debido a que en la función CrearLista, siempre devuelves la variable "registro" la cual, en este caso, siempre es el último nodo de la lista, y entonces, el siguiente de ese nodo será NULL.
Por ende, en la función MostrarLista, jamás entrará al while, ya que SIEMPRE el siguiente de ese registro será NULL (por ser el último nodo de la lista como dije antes).
Tratá de encontrarle la vuelta y encajar bien ambas funciones!

a ya creo que encontre el problema gracias a ti c:
2  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