Tipos

Colas circulares (anillos):
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 cosultarse, añadirse y eliminarse unicamente desde la cabeza del anillo que es una posición distinguida.
Existen dos operaciones de rotaciones, una en cada sentido, de manera que la cabeza del anillo pasa a ser el elemento sucesor, o el predecesor, respectivamente, de la cabeza actual.


Colas de prioridad:
Es una estructura de datos en la que los elementos se atienden 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 atienden en orden de prioridad.
Ejemplos de la vida diaria serían la sala de urgencias de un hospital, ya que los enfermos se van atendiendo en función de la gravedad de su enfermedad.
Entendiendo la prioridad como un valor numérico y asignando a altas prioridades valores pequeños, las colas de prioridad nos permiten añadir elementos en cualquier orden y recuperarlos de menor a mayor.
Hay dos tipos de colas de prioridad que son:

 a)Colas de prioridades con ordenamiento ascendente:
  En ellas los elementos se insertan de forma arbitraria, pero a la hora de extraerlos, se extrae el elemento de menor prioridad.

 b)Colas de prioridades con ordenamiento descendente:
  Son iguales que la colas de prioridad con ordenamiento ascendente, pero al extraer el elemento se extrae el de mayor prioridad.


Bicolas:
O tambien conocida como doble cola es un tipo de cola especial que permiten la inserción y eliminación de elementos de ambos extremos de la cola.
Puede representarse a partir de un vector y dos índices, siendo su representación más frecuente una lista circular doblemente enlazada.
Todas las operaciones de este tipo de datos tienen coste constante.
Son colas en donde los nodos se pueden añadir y quitar por ambos extremos; se les llama DEQUE (Double Ended QUEue).
Para representar las bicolas lo podemos hacer con un array circular con Inicio y Fin que apunten a cada uno de los extremos.
Hay variantes:

 a)Bicolas de entrada restringida:
  Son aquellas donde la inserción sólo se hace por el final, aunque podemos eliminar al inicio ó al final.

 b)Bicolas de salida restringida:
  Son aquellas donde sólo se elimina por el final, aunque se puede insertar al inicio y al final.