cola circular
La solución que se describe implica reutilizar las componentes de
l vector que contenían elementos ya eliminados. Esto es, cuando durante el
proceso de añadido lleguemos al final del
vector,comenzaremos al llenar
COLAS CIRCULARES
proceso de añadido lleguemos al inal del vector,comenzaremos a llenar
de nuevo las componentes iniciales del mismo si se encuentran vacías.
Para lograr esto manejaremos el vector como si fuese un “vector circular”.
Esto significa que no consideraremos la componente MAX del
vector como la última del mismo, sino que consideraremos que la
siguiente componente a ésta es otra vez la primera del vector
DEFINICIÓN
# define MAX número máximo de elementos
COLAS CIRCULARES
struct {
tipo_base datos [MAX];
int frente,final;
} cola;
struct cola c;
Con esta definición de Cola
las operaciones asociadas especificadas
en el TAD quedarían del siguiente modo:
Crea una cola vacía.
COLAS CIRCULARES
Crea
una
cola
vacía.
cola CrearColacirc (struct cola *c)
{
(*c).frente = 0;
(*c).final = MAX-1;
}
Una cola puede almacenar lo que nosotros queramos, números, personas, documentos, cualquier cosa. Esta estructura de datos tiene muchas aplicaciones en la informática al igual que la pila, por ejemplo cuando mandan a imprimir varios documentos a una impresora, existe una cola de impresión que sigue la filosofía, se imprimen los primeros documentos y si quiero imprimir un nuevo documento se adiciona al final de todos los documentos que están esperando a imprimirse.
Una vez comprendido en concepto ahora veamos como se implementa esto en un lenguaje de programación, por ahora lo implementaremos en Java. Java en sus librerías ya tiene la forma de implementar Colas, nosotros ahora haremos como si no existiera, es decir crearemos nuestra versión, que es lo que generalmente se hace cuando se aprende colas en la universidad. Pues bien existen dos formas de implementar para que la cola sea o bien estática (reservamos un espacio fijo en memoria) o bien dinámica (el tamaño en memoria va creciendo según se requiere), se implementa con arrays o con listas enlazadas respectivamente. Nosotros implementaremos haciendo de un array bidimensional es decir de modo estático y al decir estático estamos diciendo que tendrá un limite para almacenar datos en la cola.