// EJEMPLO BASICO DE UNA COLA
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct nodo
{
int dato;
struct nodo *atras;
};
struct nodo *cabeza = NULL;
struct nodo *isEmpty(struct nodo *cabeza ) { return cabeza; }
void ImprimeCola( struct nodo *cabeza )
{
if ( !isEmpty(cabeza) ) return;
printf("%d ==> ", cabeza->dato);
cabeza = cabeza->atras;
ImprimeCola(cabeza);
}
void ALaCola(struct nodo *new)
{
struct nodo *aux = cabeza;
if ( !cabeza ) cabeza = new; //eres el primero?
else
{
while ( aux )
if ( aux->atras ) aux = aux->atras;
else { aux->atras = new; break; }
}
}
void Guardar(char *cad)
{
struct nodo *new = (struct nodo*)malloc(sizeof(struct nodo));
new->dato = atoi(cad);
new->atras = NULL;
ALaCola(new);
}
void Atender( void )
{
if ( isEmpty( cabeza ) )
{
printf("\nSe atendió a %d\n", cabeza->dato);
cabeza = cabeza->atras;
}
else printf("NADIE A QUIEN ATENDER...\n");
}
int LeeOpcion( void )
{
char *cad = (char*)malloc(sizeof(char)*80);
printf("(g, a, i, x)==> ");
fgets(cad,80,stdin);
switch ( cad[0] )
{
case 103: // es una 'g' - g 23 (guardar)
cad++; cad++;
Guardar(cad);
break;
case 'a': // es una 'a' - (atender)
Atender( );
break;
case 'x': // es una 'x' - x ????
exit(0);
case 'i': // es una 'i' - i ??? (mostrar)
ImprimeCola(cabeza);
break;
}
}
int ciclo(void)
{
while( 1 )
{
ImprimeCola(cabeza);
printf("\n");
LeeOpcion();
}
}
int main() { ciclo(); }