You are on page 1of 9

1

3.3 Colas.
La Cola o Queue es otra de las estructuras de datos que revisaremos en este apunte. Como las
pilas, las colas son muy simples de entender e implementar. La idea de la cola es simular el
funcionamiento de una cola de la vida real, por ejemplo, la cola de un banco. Imagina que tienes una
pistola de juguete parecida a la del ejemplo de pila, pero ahora, para cargarla, debes introducir las
pelotas por la parte trasera del can. Eso es una Cola.

La cola es una estructura que se basa en el concepto FIFO: First In First Out, es decir, el primer
elemento que entra es el primero que sale.

Las colas se utilizan comnmente como un mecanismo fiable para transferir objetos desde un rea
de un programa a otro. Las colas son especialmente importantes en la programacin concurrente,
porque permite transferir objetos con seguridad de una a otra tarea.

3.3.1 Representacin en memoria esttica y dinmica.
Se las puede representar por listas enlazadas o por arrays
C= Q(1), Q(2)......., Q(n).

En cualquier caso se necesitan dos punteros
frente (f)
final (r)
y la lista o array de n elementos (LONGMAX)

Representacin de una Cola, mediante un array.
100 264 119 48
frente final
Representacin de una Cola mediante una lista enlazada
1 2 3 4
100 264 119 48
Frente final

3.3.2 Operaciones bsicas con colas.
Crear: se crea la cola vaca.
Encolar (aadir, entrar, insertar): se aade un elemento a la cola. Se aade al final de esta.
Desencolar (sacar, salir, eliminar): se elimina el elemento frontal de la cola, es decir, el primer
elemento que entr.
Frente (consultar, front): se devuelve el elemento frontal de la cola, es decir, el primer
elemento que entr.
Vaca: devuelve cierto si la pila est vaca o falso en caso contrario (empty).
Llena: Regresa verdadero cuando la cola esta llena.
2
LinkedList dispone de mtodos para soportar el comportamiento de una cola e implementa l interfaz
Queue, por lo que un objeto LinkedList puede utilizarse como implementacin de Queue.
En Java podemos encontrar variadas formas de crear Colas en pocas lineas de cdigo, un ejemplo
es una de sus Interfaces que tiene como nombre Queue con la cual podemos crear Colas y que
contiene los siguientes mtodos para el uso de las mismas.
Para Insertar:
add(e)
offer(e)
Para Extraer:
remove() genera NoSuchElementException si la cola esta vaca
poll() devuelve null si la cola esta vaca
Para Consultar el Frente:
element() genera NoSuchElementException si la cola esta vaca
peek() devuelve null si la cola esta vaca
Como podemos darnos cuenta, hay 2 mtodos para cada operacin, estos realizan de igual forma
las operaciones, pero en cierto caso 1 de ellos retornar un valor especial null y el otro lanzar una
excepcin.
Por ejemplo, los mtodos para Extraer llamados: remove() y poll(). Cuando se intenta extraer un
dato de una Cola que ya est vaca el mtodo remove() lanzar una excepcin como resultado, en
cambio el mtodo poll() simplemente retornar o tomar el valor null.
3.3.3 Tipos de colas:
3.3.3.1 Cola simple,

3.3.3.2 Cola circular
Una cola circular o anillo es una estructura de datos en la que los elementos estn de forma
circular y cada elemento tiene un sucesor y un predecesor. Los elementos pueden consultarse,
aadirse y eliminarse nicamente desde la cabeza del anillo que es una posicin 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.
3

3.3.3.3 Colas dobles.
La bicola o doble cola es un tipo de cola especial que permiten la insercin y eliminacin de
elementos de ambos extremos de la cola.

Puede representarse a partir de un vector y dos ndices, siendo su representacin ms frecuente una
lista circular doblemente enlazada.

Todas las operaciones de este tipo de datos tienen coste constante.

Tambin se conocen con el nombre de Colas Dobles, son un tipo de colas especiales, que posibilitan
la eliminacin e insercin de elementos por ambos extremos. Se puede representar a travs de un
vector y dos indices siendo esta su representacin ms comn.

4
Cabe destacar que esta estructura de datos, los elementos poseen una prioridad, y se procesan as:

Un elemento de mayor prioridad es procesado al principio.
Dos elementos con la misma prioridad se procesan de acuerdo al orden en que estos fueron
insertados en la cola.
Adems se resalta la existencia de 2 variantes:

- Bicola de entrada restringida: acepta solamente la insercin de elementos por unos de los
extremos, mientras que se puede eliminar por ambos.

- Bicola de entrada restringida: acepta solamente la eliminacin de elementos por unos de los
extremos, mientras que se puede insertar por ambos.

REFLEXIN: Las colas circulares permiten la insercin y eliminacin de elementos solo por
su inicio, mientras que las bicolas (colas circulares) lo permiten por ambos extremos y son
direccionados por 2 indices al momento de representarlos en un arreglo.

3.3.4 Aplicaciones: Colas de prioridad.
Las colas con prioridad se implementan mediante listas o arrays ordenados. No nos interesa en este
caso que salgan en el orden de entrada sino con una prioridad que le asignemos. Puede darse el
caso que existan varios elementos con la misma prioridad, en este caso saldr primero aquel que
primero llego (FIFO).
5



6


7


8




9

You might also like