#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <windows.h>
struct colanodo {
char nombre;
struct colanodo *sig;
};
typedef struct colanodo COLA;
typedef COLA *COLAPTR;
void enqueue (COLAPTR *, COLAPTR *, char);
int nohaycola (COLAPTR);
void escribecola (COLAPTR);
void menu(void);
void imprimecola (COLAPTR);
void enqueue (COLAPTR *, COLAPTR *, char);
char dequeue(COLAPTR *);
main ()
{
COLAPTR principio=NULL, final=NULL;
int opcion;
char item;
menu();
printf("\n\n Elige una opcion: ");
fflush(stdin);
scanf ("%d", &opcion);
while (opcion!=4)
{
switch (opcion)
{ case 1: printf ("\n Ingresar el caracter del nodo: ");
fflush(stdin);
scanf ("%c", &item);
enqueue (&principio, &final, item);
escribecola (principio);
printf("\n\n Enter para regresar...");
getch();
menu();
printf ("\n\n Elige una opcion :");
scanf ("%d", &opcion);
break;
case 2: printf ("\n\n Eliminar un elemento de la cola");
fflush(stdin);
dequeue (&principio);
case 3: printf ("\n\n La cola es: ");
fflush(stdin);
imprimecola (principio);
printf("\n\n Enter para regresar...");
getch();
menu();
printf ("\n\n Elige una opcion :");
scanf ("%d", &opcion);
break;
default:printf ("\n\nOpcion NO valida");
printf ("\n\nEnter para continuar");
getch();
system ("cls");
menu();
printf ("\n\n Elige una opcion :");
fflush(stdin);
scanf ("%d", &opcion);
}
}
}
void menu(void) {
system("cls");
printf("\n\n Operaciones disponibles con la Cola");
printf("\n\n 1.- Agregar un elemento a la cola");
printf("\n\n 2.- Eliminar un elemento de la cola");
printf("\n\n 3.- Imprime la cola");
printf("\n\n 4.- Fin");
};
void enqueue (COLAPTR *adela, COLAPTR *atras, char valor)
{
COLAPTR aux=(COLAPTR)malloc(sizeof(COLA));
aux->sig=NULL;
aux->nombre=valor;
if (nohaycola(*adela))
{*adela=aux;
*atras=aux;}
else
{
(*atras)->sig=aux;
*atras=aux;
}
}
int nohaycola (COLAPTR aux)
{
return aux==NULL;
}
void escribecola (COLAPTR aux)
{
if (nohaycola(aux))
printf("\n\nNo hay cola");
else { printf ("\n\n La cola tiene... ");
printf ("\n Principio --> ");
while (aux!=NULL)
{printf("%c <-- ", aux->nombre);
aux=aux->sig;
}
printf("Final de la cola");
}
}
void imprimecola (COLAPTR aux)
{
if (nohaycola(aux))
printf(" No hay cola");
else { printf ("\n Principio --> ");
while (aux!=NULL)
{printf("%c <-- ", aux->nombre);
aux=aux->sig;
}
printf("Final de la cola");
}
}
char dequeue(COLAPTR *adela)
{
COLAPTR aux; char sale;
aux=*adela;
sale=aux->nombre;
*adela=aux->sig;
free(aux);
return (sale);
}
No hay comentarios:
Publicar un comentario