Estructuras de datos lineales/ Colas

COLAS

Las colas al igual que las pilas, son una estructuras de datos lineales y condicionadas, para el caso de las colas las inserciones y eliminaciones se realizan por extremos diferentes. en este apartado se abordan los temas relacionados con los conceptos básicos de las colas, las operaciones que se pueden realizar con programas de aplicación, implementados con apuntadores haciendo uso de la gestión dinámica de memoria.

El menú de opciones es el ingrediente principal para cada programa, lo que permite la interacción del usuario con las funciones para la inserción, visualización, eliminación y búsqueda de datos en la cola.

 

Definición de una cola

Una cola  se puede definir como una estructura lineal de datos condicionada, en la que las eliminaciones se realizan al principio de la lista, es decir, al frente, y las inserciones se realizan en el extremo opuesto de la lista, es decir, al final.  En las colas el elemento que entró de primero sale también de primero; por ello se conocen como listas FIFO, en ingles (first-in, first-out), primero en entrar, primero en salir.

Una representación gráfica de las estructuras de datos tipo cola puede visualizarse en la imagen 1, que se muestra a continuación.

Imagen 1. Representación gráfica de una cola

Cola

 

Aplicación de las estructuras de datos tipo colas

En la vida real se tiene ejemplos numerosos de colas: la cola de un autobuses, cola para ingresar al cine, caravana de coches en una calle, etc.  En todas ellas el primer elemento (pasajero, coche, etc) que llega es el primero que sale.

Las colas se usan para almacenar datos que necesitan ser procesados según el orden de llegada. Una aplicabilidad de las colas puede realizarse en un sistema de informático manejado a través de una red de computadoras donde se comparte una sola impresora para todos los equipos conectados a la red;    de tal manera que se imprimirán los documentos en el orden en que se hace la petición de impresión de cada usuario. Formando así una cola de impresión.

Una muy buena implementación de las colas como solución a una situación del entorno podría realizarse un programa para manejar un planificador de citas en un consultorio médico, de tal manera que cada solicitud de una cita se va almacenando en la cola, los datos requeridos podrían ser: el nombre del paciente y la fecha y hora de la cita,  la atención por parte del medico será en el mismo orden de fecha y hora en que se registró la cita.

En general, en una cola es una situación que vivimos a diario, el primero que llega será atendido de primero, pasando a continuación el segundo de la cola al frente, y cada que llega un nuevo usuario este se colocará al final de la cola. De aquí que el extremo por donde se insertan los elementos se llamará «final» y por donde se retiran se llama  «frente».

Imagen 2. Interacción gráfica de una cola

Cola1

 

Operaciones que se pueden realizar con Colas

Las operaciones básica que se pueden realizar con una cola son:

  • Insertar un elemento al final  en una cola no vacía.
  • Visualizar: muestra los elementos insertados en la cola
  • Eliminar un elemento del principio de la cola
  • Buscar un elemento en la cola
  • Vaciar la cola.
  • Verificar el estado de la cola:  vacía, llena.

Implementación de las Colas por medio de Punteros

La implementación de las estructura de datos lineales tipo cola  se puede realizar a través de listas enlazadas con apuntadores,  al igual que a través de  arreglos unidimensionales. Para nuestro caso profundizaremos en la primera opción.

Se requiere implementar un programa codificado en C++, que permita mediante un menú de opciones gestionar los de turnos de llegada y salida de los usuarios  como aplicabilidad a las estructuras de datos tipo cola, el programa contará con las opciones de ingresar turnos a la cola, visualizar los turnos asignados y eliminar turno de la cola una vez hayan sido atendidos.

El programa se renombra como Turno.cpp

Turno1

Turno2Turno3Turno4

Veamos la salida en pantalla del menú de opciones del programa Turno.cpp  tal como se visualiza en la imagen 1. que se muestra a continuación.

Imagen1. Salida en pantalla del programa Turno.cpp

SalidaTurno