Está en la página 1de 8

República Bolivariana de Venezuela

Ministerio del Poder Popular para la Educación


Escuela Técnica de Comercio Alberto Adriani

Operaciones Básicas con colas

Autor: Kleyber cárdenas


Cédula: 30.853.890
Año y Mención: 6to Informática
Representación en memoria estática y dinámica
La utilización de este método programático es que sólo podemos acceder al primer y al último elemento de la estructura, de tal manera
que los elementos sólo se pueden eliminar por el principio y sólo se pueden añadir por el final de la cola.
Ejemplos de colas en la vida real serían: personas comprando en un supermercado, esperando para entrar a ver un partido de béisbol,
esperando en el cine para ver una película, una pequeña peluquería, etc. La idea esencial es que son todas líneas de espera.
Operaciones básicas con colas
Operaciones Básicas:
(PUSH) Insertar: Agregar un elemento al final de la cola
(POP) Remover: Remover el primer elemento de la cola.

Operaciones Auxiliares:
Llena: Regresa verdadero cuando la cola esta llena.
Vacía: Regresa verdadero cuando la cola esta llena.

Tipos de colas
Cola dobles:
La bicola o 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.
Esta estructura es una cola bidimensional en que las inserciones y eliminaciones se pueden realizar en cualquiera de los dos extremos
de la bicola. Gráficamente representamos una bicola de la siguiente manera:
Existen dos variantes de la doble cola:
Doble cola de entrada restringida.
Doble cola de salida restringida.
La primera variante sólo acepta inserciones al final de la cola, y la segunda acepta eliminaciones sólo al frente de la cola
Algoritmo de Inicialización
F < -- 1
A <-- 0

Algoritmo para Insertar


Si A=máximo entonces mensaje (overflow) en caso contrario
A <--A+1
cola[A]<-- valor

Algoritmo para Extraer


Si F&gtA entonces
mensaje (underflow)
en caso contrario
mensaje (frente/atrás)
si frente entonces
x <-- cola[F]
F <-- F+1
en caso contrario
x <-- cola[A]
A <-- A-1

Esta estructura es un conjunto de elementos donde a cada uno de ellos se les asigna una prioridad, y la forma en que son procesados es la siguiente:
Un elemento de mayor prioridad es procesado al principio.
Dos elementos con la misma prioridad son procesados de acuerdo al orden en que fueron insertados en la cola.

Algoritmo para Insertar:


x <--1
final<--verdadero
para i desde 1 hasta n haz
Si cola[i]&gtprioridad entonces
x <--i
final <--falso
salir
si final entonces
x <--n+1
para i desde n+1 hasta x+1
cola[i] <--prioridad
n <-- n+1
Algoritmo para Extraer:
Si cola[1]=0 entonces
mensaje(overflow)
en caso contrario
procesar <--cola[1]
para i desde 2 hasta n haz
cola[i-1] <--cola[1]
n <-- n-1

Las operaciones que nosotros podemos realizar sobre una cola son las siguientes:
· Inserción.
· Extracción.
Las inserciones en la cola se llevarán a cabo por atrás de la cola, mientras que las eliminaciones se realizarán por el frente de la cola
(hay que recordar que el primero en entrar es el primero en salir).

Existen dos variantes de la doble cola:


Doble cola de entrada restringida: Este tipo de doble cola acepta solamente la inserción de elementos por un extremo; mientras
que puede eliminar por ambos.
Doble cola de salida restringida: Este tipo de doble cola acepta solamente la eliminación de elementos por un extremo; mientras
que puede insertar por ambos.
Cola Circular:
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 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.
Para solucionar el problema de desperdicio de memoria se implementaron las colas circulares, en las cuales existe un apuntador
desde el último elemento al primero de la cola.
La representación gráfica de esta estructura es la siguiente:

La condición de vacío en este tipo de cola es que el apuntador F sea igual a cero.
Las condiciones que debemos tener presentes al trabajar con este tipo de estructura son las siguientes:
· Over flow, cuando se realice una inserción.
· Under flow, cuando se requiera de una extracción en la cola.
· Vacio.

ALGORITMO DE INICIALIZACIÓN
F < -- 0
A<-- 0
ALGORITMO PARA INSERTAR
Si (F+1=A) ó (F=1 y A=máximo) entonces
mensaje (overflow)
en caso contrario
inicio
si A=máximo entonces
A<--1
cola[A]<-- valor
en caso contrario
A <--A+1
cola[A]<-- valor
si F=0 entonces
F <-- 1
Fin

ALGORITMO PARA EXTRAER


Si F=0 entonces
mensaje (underflow) en caso contrario
x <-- cola[F]
si F=A entonces
F <-- 0
A<-- 0
en caso contrario
si F=máximo entonces

F <--1 en caso contrario F <-- F+1


Aplicaciones: Colas de prioridad
Una Cola de Prioridad es una estructura de datos que: permite:
1. La inserción de elementos en la cola con una determinada prioridad.
2. Consultar el siguiente elemento de la cola de acuerdo a la prioridad de sus elementos.
3. Obtener y eliminar el siguiente elemento de la cola de acuerdo a la prioridad de sus elementos.
Particularidades de Java:
La prioridad de los elementos no es explícita, viene implícita de acuerdo al criterio de comparación de los elementos. El mínimo elemento es el
más prioritario.
Estructura de Datos: Cola de Prioridad.
Cola de Prioridad: Colección de Datos:
que tienen Asociado cierta información (prioridad) que determina el orden en el que se accede a dichos datos.

package modelos;
public interface ColaPrioridad<E extends Comparable<E>> {
void insertar(E x);
E recuperarMin();
E eliminarMin();
boolean esVacia();
}
Precondición: Los métodos recuperarMin() y eliminarMin()

se tienen que aplicar sobre Cola Prioridad no vacías.

También podría gustarte