// 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(); }