En muchas aplicaciones se cumple el hecho de que el primer proceso que solicita un servicio o recurso es el primero en ser servido. Para retirar elementos (servicios, recursos) en el mismo orden en que fueron solicitados, se necesitan unas estructuras de datos abstractas que mantengan una secuencia de valores y permitan aadir nuevos elementos por un extremo y retirarlos por el otro. Esta estructura recibe el nombre de cola. En las colas el elemento que entr el primero sale tambin el primero, por ello se le conoce tambin como listas FIFO (first-in, first-out; primero en entrar, primero en salir.) Se define la cola, como una estructura de datos homognea de tamao variable que soporta el siguiente modo de acceso: insercin por un extremo y extraccin por el opuesto. Operaciones posibles sobre la cola son la creacin de una cola vaca, la determinacin de s la cola est o no vaca y la destruccin de la cola. De igual modo que se ha visto para la pila, una cola se puede implementar haciendo uso de las estructuras dinmicas de datos. En este caso, se simula mediante una lista enlazada que mantiene dos punteros, uno llamado frente por donde se van extrayendo los elementos ms antiguos de la cola, y otro llamado final, que seala al extremo por el cual se irn aadiendo elementos a la cola. De esta forma, el puntero final nos garantiza que cada vez que se tenga que extraer un elemento de la cola, no sea necesario recorrer sta desde el principio, lo cual sera altamente ineficiente para colas largas. Las operaciones de insertar y extraer de la cola tienen acceso directo a los nodos de la cola en los que se van a realizar estas operaciones. La diferencia con las pilas reside en el modo de entrada y salida de los datos, en las colas las inserciones se realizan al final de la lista, no al principio.
Extraer Aadir
Cola
FrenteFinal
Prctica
Se desea simular el comportamiento de una parada de autobs a la que slo puede llegar un autobs. Cuando llegue un autobs con n plazas libes, las personas que estn esperando subirn por orden de llegada a la parada hasta completar las plazas vacas o no haber esperando ms personas dicho autobs. El comportamiento de la parada es idntico a una estructura de Cola. Por lo que se debe implementar una Cola (a partir de la definicin que se adjunta Y SIN MODIFICAR LA DEFINICIN DE LA MISMA) y un programa cliente con las siguientes opciones de menu:
Prctica 18: Colas en C++ A. Llegar Persona Parada B. Llegar Bus Parada C. Primero Bus Parada D. PintarParada
X. Salir del Programa
Llegar Persona Parada. Se pedir por teclado el nombre de la persona que est esperando el autobs y se meter en la cola. Llegar Bus Parada. Se pedir por teclado el nmero de plazas libres que tiene el autobs y se quitarn de la cola (mostrando su nombre por pantalla) tantas personas como plazas libres haya o hasta que la cola est vaca. Primero Bus Parada. Mostrar por pantalla el nombre de la primera persona que espera el autobs. PintarParada. Muestra por orden todas las personas que estn en la cola. Salir del Programa. Se pedir confirmacin de salida. Laboratorio de Programacin ESTRUCTURA Y ALGO I Ing.Alberto MOreno @ 2013 2
Despus de cada opcin se har una pausa y se limpiar la pantalla antes de volver al men principal.