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#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
int listavacia(struct NODO *p);
void
recorrer(struct NODO *p);
struct NODO
{
int dato;
struct NODO *siguiente;
};
void main()
{
struct NODO *lista=NULL;
struct NODO *pa, *pa2;
int i, vacio;
char letra;
for (i=0; i<=11; i++)
{
letra=getche();
pa=new NODO;
pa->dato=letra;
vacio=listavacia(lista);
if (vacio==1)
{
pa->siguiente=NULL;
}
else
{
pa->siguiente=lista;
}
lista=pa;
}
recorrer(lista);
}
int listavacia(struct NODO *p)
{
if (p==NULL) return 1;
else return 0;
}
void recorrer(struct NODO *p)
{
if (listavacia(p)==1)
{
printf ("La lista no tiene nodos que recorrer\n"); }
else
{
printf ("Los valores contenidos en la lista son:\n"); while (p!=NULL)
{
printf ("Valor: %c\n", p
->dato
); p=p->siguiente;
}
}
}
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.