Ver Mensaje Individual
  #1 (permalink)  
Antiguo 17/05/2010, 10:30
nestor1991ag
 
Fecha de Ingreso: abril-2010
Mensajes: 13
Antigüedad: 14 años, 6 meses
Puntos: 0
¿Como poner esta lista de forma ordenada?

Buenas, me manejo ahora, que no me puedo quejar con las listas, pero el caso es que las hago en modo pila, y yo las quiero escribir en modo cola. Lo entiendo perfectamente gráficamente, creo que hay que hacerlo con un puntero auxiliar, pero llevo como 1 hora y no se me mete en la cabeza como hacerlo de forma que este en cola.

Este es el enunciado y el códgio:

Ejercicio 57: Diseña un programa que cree una lista de caracteres e inserte en ella 12 caracteres leídos de teclado. Cada carácter se añadirá a la cola de la lista. Al final se llamará a una función para recorrer y visualizar en pantalla los caracteres de la lista.
Código c:
Ver original
  1. #include <stdio.h>
  2. #include <conio.h>
  3. #include <stdlib.h>
  4. int listavacia(struct NODO *p);
  5. void
  6. recorrer(struct NODO *p);
  7.  
  8. struct NODO
  9. {
  10.     int dato;
  11.     struct NODO *siguiente;
  12. };
  13.  
  14. void main()
  15. {
  16.     struct NODO *lista=NULL;
  17.     struct NODO *pa, *pa2;
  18.     int i, vacio;
  19.     char letra;
  20.    
  21.     for (i=0; i<=11; i++)
  22.     {
  23.         printf ("Dime una letra\n");
  24.         letra=getche();
  25.  
  26.         pa=new NODO;
  27.         pa->dato=letra;
  28.  
  29.         vacio=listavacia(lista);
  30.  
  31.         if (vacio==1)
  32.         {
  33.             pa->siguiente=NULL;
  34.         }
  35.  
  36.         else
  37.         {
  38.             pa->siguiente=lista;
  39.            
  40.         }
  41.  
  42.         lista=pa;
  43.     }
  44.  
  45.     recorrer(lista);
  46.  
  47.     getch();
  48. }
  49.  
  50. int listavacia(struct NODO *p)
  51. {
  52.     if (p==NULL) return 1;
  53.     else return 0;
  54. }
  55.  
  56. void recorrer(struct NODO *p)
  57. {
  58.     if (listavacia(p)==1)
  59.     {
  60.         printf ("La lista no tiene nodos que recorrer\n");
  61.     }
  62.  
  63.     else
  64.     {
  65.         printf ("Los valores contenidos en la lista son:\n");
  66.         while (p!=NULL)
  67.         {
  68.             printf ("Valor: %c\n", p->dato);
  69.             p=p->siguiente;
  70.         }
  71.     }
  72. }

El examen final es mañana día martes y estoy muy preocupado con esta tontería.
Por favor, si alguien me puede echar una mano se lo agradecería mucho.

Saludos.