Colas Dobles y Circulares
Colas Dobles y Circulares
Colas Dobles y Circulares
Grupo: LI-131
Las colas lineales tienen un grave problema, como las extracciones sólo pueden
realizarse por un extremo, puede llegar un momento en que el apuntador A sea
igual al máximo número de elementos en la cola, siendo que al frente de la misma
existan lugares vacíos, y al insertar un nuevo elemento nos mandará un error de
overflow (cola llena).
Ejemplos:
2
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:
Vacio
Este tipo de cola no tiene mucha diferencia a la cola doble, lo único que tiene de
diferente es que las conexiones en los apuntadores internos "prev" y "next" nunca
apuntan a nulo, solo cuando no existe ningún valor en la pila, sino, es como o
veremos a continuación:
Y su código seria:
Para el resto de los valores que entren con la cola con mas de una valor;
ALGORITMO DE INICIALIZACIÓN
F < -- 0
A<-- 0
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
Colas dobles (Bicola):
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.
Para representar una bicola se puede elegir una representación estática, con
arrays, o una representación dinámica con punteros.
Esta se trata de que cada valor tenga doble conexión o dos apuntadores internos
"next" y "prev", que ayudara a este valor a tener comunicación con el valor que
entro antes que el y el valor que entro después que el.
Algoritmo de Inicialización
F < -- 1
A <-- 0
Si A=máximo entonces
mensaje (overflow)
en caso contrario
A <--A+1
cola[A]<-- valor
Si F>A 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
Algoritmo de Inicialización
F <--1
A <-- 0
Si F>A entonces
mensaje (overflow)
en caso contrario
mensaje (Frente/Atrás)
si Frente entonces
cola[F] <--valor
en caso contrario
A <-- A+1
cola[A] <--valor
Si F=0 entonces
mensaje (underflow)
en caso contrario
x <--cola[F]
F <-- F+1
package com.javajeff.cds;
public class ArrayCircularQueue implements Queue {
private int front = 0, rear = 0;
private Object [] queue;
http://es.wikipedia.org/wiki/Bicola
http://sistemas.itlp.edu.mx/tutoriales/estru1/24.htm
http://sistemas.itlp.edu.mx/tutoriales/estru1/25.htm
http://www.monografias.com/trabajos32/estructura-de-datos/estructura-de-
datos.shtml#cola
http://www.conclase.net/c/edd/index.php?cap=000#inicio