Las colas ofrecen dos operaciones fundamentales, que son encolar (al final de la cola) y desencolar...

7
Las colas ofrecen dos operaciones fundamentales, que son encolar (al final de la cola) y desencolar (del comienzo de la cola). Al igual que con las pilas, la implementación de las colas suele encapsularse, es decir, basta con conocer las operaciones de manipulación de la cola para poder usarla, olvidando su implementación interna

Transcript of Las colas ofrecen dos operaciones fundamentales, que son encolar (al final de la cola) y desencolar...

Page 1: Las colas ofrecen dos operaciones fundamentales, que son encolar (al final de la cola) y desencolar (del comienzo de la cola). Al igual que con las pilas,

Las colas ofrecen dos operaciones fundamentales, que son encolar (al final de la cola) y desencolar (del comienzo de la cola). Al igual que con las pilas, la implementación de las colas suele encapsularse, es decir, basta con conocer las operaciones de manipulación de la cola para poder usarla, olvidando su implementación interna

Page 2: Las colas ofrecen dos operaciones fundamentales, que son encolar (al final de la cola) y desencolar (del comienzo de la cola). Al igual que con las pilas,

Implementación mediante array circular….

Esta implementación es estática, es decir, da un tamaño máximo fijo a la cola. No se incluye comprobación de errores dentro del encolado y el desencolado, pero se implementan como funciones aparte. ¿Por qué un array circular? ¿Qué es eso? Como se aprecia en la implementación de las pilas, los elementos se quitan y se ponen sobre la cima, pero en este caso se introducen por un sitio y se quitan por otro.

Page 3: Las colas ofrecen dos operaciones fundamentales, que son encolar (al final de la cola) y desencolar (del comienzo de la cola). Al igual que con las pilas,

En esta primera figura se observa que se han introducido tres elementos: 3, 1 y 4 (en es ese orden):

se desencola, obteniendo un 3:

encola un 7:

Page 4: Las colas ofrecen dos operaciones fundamentales, que son encolar (al final de la cola) y desencolar (del comienzo de la cola). Al igual que con las pilas,

Cola vacía: la cola está vacía si el elemento siguiente a entrada es salida, como sucede en el ejemplo anterior.

Cola llena: la cola está llena si el elemento que sigue al que sigue a entrada es salida. Esto obliga a dejar un elemento vacío en el array, puesto que se reserva una posición para separar los índices entrada y salida.

Page 5: Las colas ofrecen dos operaciones fundamentales, que son encolar (al final de la cola) y desencolar (del comienzo de la cola). Al igual que con las pilas,

Es una estructura de tipo FIFO (First In First Out), es decir: primero en entrar, primero en salir.

Detalle:

En un principio se compara para saber si tiene algún dato en la Cola, si no es así desplegara “Cola Vacía…”.

De otra forma compara si Frente es mayor o igual a Final, de esta forma simplemente hace un Recorrido

lineal como los anteriores. De otra forma usar Max como bandera para saber cuando empezar a contar de 0 a

Final (Ya que sabemos que el Frente después del nodo Final).

Page 6: Las colas ofrecen dos operaciones fundamentales, que son encolar (al final de la cola) y desencolar (del comienzo de la cola). Al igual que con las pilas,

Tipos de colas

* Colas de prioridad: En ellas, 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.

Hay 2 formas de implementación: además los datos no son datos sino son resultados que se representan a través del tempo. puede ser

alguien o algo

1. Añadir un campo a cada nodo con su prioridad. Resulta conveniente mantener la cola ordenada por orden de prioridad.

2. Crear tantas colas como prioridades haya, y almacenar cada elemento en su cola.

Page 7: Las colas ofrecen dos operaciones fundamentales, que son encolar (al final de la cola) y desencolar (del comienzo de la cola). Al igual que con las pilas,

•Bicolas: 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 Ini y Fin que apunten a cada uno de los extremos. Hay variantes:

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

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