Sei sulla pagina 1di 0

UNIVERSIDAD PBLICA DE EL ALTO

ING. DE SISTEMAS ESTRUCTURA DE DATOS


1 Ing. Pascual Yana Chejo
ESTRUCTURA: COLA CIRCULAR
Las eliminaciones que se realizan en una cola simple generan
espacios que no pueden ser reutilizados. La solucin que se
describe implica la reutilizacin de esos espacios, a travs
del mecanismo llamado COLA CIRCULAR.
DEFINICIN DE COLA CIRCULAR.
Una cola circular es una estructura de datos lineal y
esttica, que permite insertar datos en los espacios
generados por el mtodo eliminar() de la clase cola, una vez
que se haya alcanzado la capacidad mxima(maxColac).
UNIVERSIDAD PBLICA DE EL ALTO
ING. DE SISTEMAS ESTRUCTURA DE DATOS
2 Ing. Pascual Yana Chejo
CARACTERSTICAS UNA COLA CIRCULAR.
Una cola circular es una estructura de datos en la que los
datos estarn organizados lgicamente de forma circular.
- Las eliminaciones, como una cola simple se los realiza
por FC (frente).
- Las inserciones, se los realiza por el RD (final). Si se
hubiera llegado a maxColac, se inserta en los espacios
generados por el mtodo eliminar().
- Para las bsquedas y recorridos en las colas circulares,
se hace uso de una cola auxiliar.
REPRESENTACIN GRFICA DE UNA COLA CIRCULAR.
En el presente apartado se representara a las colas
circulares mediante vectores o arrays unidimensionales.
a)
UNIVERSIDAD PBLICA DE EL ALTO
ING. DE SISTEMAS ESTRUCTURA DE DATOS
3 Ing. Pascual Yana Chejo
b)
ELEMENTOS DE UNA COLA CIRCULAR.
maxColac: Variable que contiene la capacidad de la cola.
COLAC[]: Vector que almacena los datos de la cola.
FC: puntero que apunta al primer dato de la cola.
RC: puntero que apunta al ltimo dato de la cola.
IMPLEMENTACIN DE LA ESTRUCTURA COLA CIRCULAR EN JAVA.
Con fines didcticos la implementacin de la cola circular se
realiza a travs de dos clases: principal y colaCircular.
I. CLASE PRINCIPAL EN JAVA.
Crea una cola circular CC1 y revalida el trabajo de las
operaciones definidas sobre ella.
public class Principal {
public static void main(String[] args) {
ColaCircular CC1=new ColaCircular();
// crea el objeto cola.
// Agrega cdigo necesario para resolucin de
// problemas con colas
}
}
UNIVERSIDAD PBLICA DE EL ALTO
ING. DE SISTEMAS ESTRUCTURA DE DATOS
4 Ing. Pascual Yana Chejo
II.CLASE COLA CIRCULAR EN JAVA.
Define los atributos y los mtodos propios de una cola
circular.
public class ColaCircular {
// Agregue aqu los atributos y mtodos que
// conformar la estructura de datos COLA SIMPLE
}
ATRIBUTOS DE LA ESTRUCTURA COLA CIRCULAR.
Se define los elementos de la cola, como son las variables:
public class ColaCircular {
final int MaxColac = 100; // define el tamao de la cola
int[] COLAC; // define un vector que almacenara
los datos
int FC; // define los punteros frente
int RC; // y final de la cola
//Agregue aqu los mtodos (operaciones) que se desarrollen
// en clases.
}
OPERACIONES DEFINIDOS SOBRE COLAS.
Las operaciones que se definen sobre una cola simple son:
1. OPERACIONES DE ESTADO.
a. CREAR E INICIALIZAR COLA CIRCULAR [CONSTRUCTOR].
UNIVERSIDAD PBLICA DE EL ALTO
ING. DE SISTEMAS ESTRUCTURA DE DATOS
5 Ing. Pascual Yana Chejo
public ColaCircular() {
COLAC = new int[MaxColac];
FC = -1;
RC = -1;
}
b. COLA CIRCULAR VACA, Devuelve verdadero si no existe
ningn elemento en la cola.
public boolean ColaVacia() {
return ((FC == -1) && (RC == -1));
}
c. TAMAO DE COLA CIRCULAR. Devuelve el nmero de elementos
que posee la cola.
public int Tamao() {
if (ColaVacia())
return (RC - FC + MaxColac) % MaxColac;
return ((RC - FC + MaxColac) % MaxColac) + 1;
}
d. COLA CIRCULAR LLENA. Devuelve verdadero si la cola est
llena.
public boolean ColaLlena() {
return Tamao() == MaxColac;
}
2. OPERACIONES FUNDAMENTALES
a. INSERTAR UN ELEMENTO EN LA COLA CIRCULAR. Inserta un
elemento por el FINAL [RC] en la cola.
UNIVERSIDAD PBLICA DE EL ALTO
ING. DE SISTEMAS ESTRUCTURA DE DATOS
6 Ing. Pascual Yana Chejo
public void Insertar(int x) {
if (ColaLlena()) {
System.out.println("Cola Llena! No se pudo
adicionar.");
} else {
if ((FC == -1) && (RC == -1)) {
RC = RC + 1;
COLAC[RC] = x;
FC = 0;
} else {
if (RC == (MaxColac - 1)) {
RC = 0;
COLAC[RC] = x;
} else {
RC = RC + 1;
COLAC[RC] = x;
}
}
}
}
b. ELIMINAR UN ELEMENTO DE LA COLA CIRCULAR. Elimina un
elemento por FRENTE [FC] en la cola.
public int Eliminar() {
int x = -1;
if (ColaVacia()) {
System.out.println("Cola Vacia! No se pudo
eliminar.");
} else {
if (RC == FC) {
x = COLAC[FC];
UNIVERSIDAD PBLICA DE EL ALTO
ING. DE SISTEMAS ESTRUCTURA DE DATOS
7 Ing. Pascual Yana Chejo
FC = -1;
RC = -1;
} else {
if (FC == (MaxColac - 1)) {
x = COLAC[FC];
FC = 0;
} else {
x = COLAC[FC];
FC = FC + 1;
}
}
}
return x;
}
c. RECORRER COLA CIRCULAR. Muestra todos los elementos de
la cola circular (de IZQUIERDA A DERECHA)
public void Recorrer() {
if (ColaVacia()) {
System.out.println("Cola Vacia! No se puede
mostrar nada.");
} else {
ColaCircular CCaux = new ColaCircular();
System.out.print("COLAC: ");
while (!ColaVacia()) {
int x = Eliminar();
System.out.print(x + " ");
CCaux.Insertar(x);
}
while (!CCaux.ColaVacia()) {
Insertar(CCaux.Eliminar());
UNIVERSIDAD PBLICA DE EL ALTO
ING. DE SISTEMAS ESTRUCTURA DE DATOS
8 Ing. Pascual Yana Chejo
}
}
}
d. BSQUEDA DE UN ELEMENTO. Muestra la ubicacin (ndice)
de un elemento dentro de la cola circular. Si se
encuentra, caso contrario despliega un mensaje de Error.
public void Buscar() {
Scanner in = new Scanner(System.in);
int pos = -1;
int cont = 0;
System.out.println("\nIngrese el valor que desea buscar:
");
int eb = in.nextInt();
if (ColaVacia()) {
System.out.println("Cola Vacia! No se puede Buscar
ningn elemento.");
} else {
ColaCircular CCaux = new ColaCircular();
while (!ColaVacia()) {
pos = FC; // guardamos para no perderla
int x = Eliminar();
if (x == eb) {
cont = cont + 1;
System.out.print("\n Se encuentra en
la posicin: " + (pos + 1) + " ");
CCaux.Insertar(x);
} else {
CCaux.Insertar(x);
}
}
UNIVERSIDAD PBLICA DE EL ALTO
ING. DE SISTEMAS ESTRUCTURA DE DATOS
9 Ing. Pascual Yana Chejo
while (!CCaux.ColaVacia()) {
Insertar(CCaux.Eliminar());
}
}
if (pos == -1) {
System.out.println(" \nERROR! No existe el
elemento en la Cola Circular.");
} else {
System.out.println(" \nSe encontraron: " +
cont + " Elementos");
}
}
3. OPERACIONES COMPLEMENTARIAS
a. INSERTAR N ELEMENTOS EN LA COLA CIRCULAR. Inserta N
elementos por el FINAL en la cola.
public void InsertaN() {
Scanner in = new Scanner(System.in);
System.out.print("Nro.Elementos: ");
int n = in.nextInt();
System.out.println("Ingrese elementos:");
for (int i = 0; i < n; i++) {
int x = in.nextInt();
Insertar(x);
}
}
EJERCICIOS.
UNIVERSIDAD PBLICA DE EL ALTO
ING. DE SISTEMAS ESTRUCTURA DE DATOS
10 Ing. Pascual Yana Chejo
a. Desarrollar un mtodo que permita mostrar el primer
elemento de la cola.
b. Desarrollar un mtodo que permita mostrar el ltimo
elemento de la cola.
c. Desarrollar un mtodo que permita eliminar N primeros
elementos de la cola.
d. Desarrollar un mtodo que permita cargar con N elementos
aleatorios a la cola.

Potrebbero piacerti anche