Estructura de datos caracterizada por ser una secuencia de elementos en la que la operación de inserción (push) se realiza por un extremo y la extracción (pop) por el otro.
Cola
Una cola es una estructura de datos, caracterizada por ser una secuencia de elementos en la que la operación de inserción (push) se realiza por un extremo y la extracción (pop) por el otro. Un ejemplo de colas sería la cola que hacen los clientes en un banco o la cola que se hace para pagar algún servicio, es decir la persona que ingresó primero a la cola será la primer persona a la que se atenderá y se le dará la salida.
Las operaciones usuales en las colas son insertar y eliminar. Un elemento se inserta en la cola en la parte final de la lista, y se elimina por la parte frontal de la lista. Los elementos se eliminan de la cola en el mismo orden en que se almacenan y por consiguiente, una cola es una estructura FIFO (First Input First Output) porque el primer elemento que entra es el primero que sale.
Push
La operación insertar o push añade un elemento por el extremo final de la cola. Al insertar un elemento X en una cola que está vacía el elemento se insertará en la posición 0, es decir, en la primera posición. Al agregar otro elemento Y en la cola, éste ingresará por el final de la cola y se colocará en la posición final, ahora la posición final se correría un espacio más atrás, que será donde se colocará el siguiente elemento que se inserte en la cola. Lo mismo pasará al agregar otro elemento Z, éste entraría por el final de la cola y se colocaría en la nueva posición final, y dicha posición final se correría un espacio más atrás.
POP
Para eliminar un elemento de la cola, se tendrá que quitar el elemento que se encuentra en la posición de en frente, ya que éste fue el primero en entrar. Entonces siguiendo con el ejemplo anterior, el primer elemento a eliminar es el elemento X, y el elemento Y pasa al lugar de X y Z tomará el lugar de Y, y el final de la cola pasaría a ser una posición antes, es decir la posición en la que estaba el elemento Z. El siguiente elemento a eliminar es el Y, al eliminar éste, el elemento Z pasa a ocupar la posición del elemento eliminado, que en este caso sería el Y, y el final de la cola se corre una posición adelante.
Colas Circulares
El objetivo de una cola circular es aprovechar al máximo el espacio del arreglo. La idea es insertar elementos es las localidades previamente desocupadas. La implementación tradicional considera dejar un espacio entre el frente y la cola.
Una cola circular o anillo es una estructura de datos en la que los elementos están de forma circular y cada elemento tiene un sucesor y un predecesor. Los elementos pueden consultarse, añadirse y eliminarse únicamente desde la cabeza del añillo que es una posición distinguida. Esta avanza en el sentido de las agujas del reloj.
En la siguiente ilustración muestra un cola circular con un solo dato almacenado. La variable “final” es la posición en donde se hizo la última inserción. Después que se ha producido una inserción, final se mueve circularmente a la derecha.
Cola de Prioridad
Una cola de prioridad se utiliza para que los elementos se atiendan en el orden indicado por una prioridad asociada a cada uno. Si varios elementos tienen la misma prioridad, se atenderán de modo convencional según la posición que ocupen. Este tipo especial de colas tienen las mismas operaciones que las colas, pero con la condición de que los elementos se atienen en orden de prioridad.