Вы находитесь на странице: 1из 3

I MPLEMENTACION ARRAY CI RCULAR

Fig 1 Concepto de cola circular


Esta implementacion pretende solucionar el problema del desperdicio en la implementacion sobre array.
Para esto usa un metodo inusual cuya implementacion se muestra a continuacion.

Este metodo anteriormente descrito lo que hace es devolver siempre el siguiente numero del que se lo
entregue, siempre y cuando cumpla con las siguientes condiciones.
o El numero entregado debe estar dentro del rango siguiente
0-TamanioArray-1 =>
Si miramos la fig 2 vemos que el array tiene 8 elementos por lo tanto al usar el metodo siguiente tendremos
que mandarle como parmetro nmeros dentro del rango 0-7.
As si se manda 0 el mtodo nos devuelve 1, si se manda 7 nos devuelve 0, si se manda 1 nos devuelve 2,
etc
Pero hay solo un inconveniente con el mtodo de verificacin de cola llena, que para verificar si est llena,
hay que recorrer dos espacios al fin de cola.
Estructura de Datos Cola
Carlos Sigua

Autor:

Ing. Cristian Timbi Docente:



1
Estructura de Datos Cola Estructura de Datos
CARLOS SIGUA
UPS sede Cuenca

Bueno asi el codigo para la implementacion de cola en array se mejora.Porque hay que recordar que no hay
colas circulares, sino que es un concepto abstracto para lograr reducir el desperdicio de espacio de memoria
en la implementacion con array.

CODI GO

package implementacionColas;

public class ColaCircular
{
private int MAXTAMQ ;
protected int inicioCola;
protected int finCola;
protected int[] arrayCola ;

//inicializa la cola vaca
public ColaCircular(){
inicioCola = 0;
MAXTAMQ=99;
//probemos con fin de cola en 0
finCola=0;
// finCola = MAXTAMQ-1;
arrayCola = new int [MAXTAMQ];
}
public ColaCircular(int tamanio){
inicioCola = 0;
MAXTAMQ = tamanio;
// finCola =0;
finCola = MAXTAMQ-1;
arrayCola = new int [MAXTAMQ];
}

// avanza una posicin
private int siguiente(int r){
return (r+1) % MAXTAMQ;
}
// operaciones de modificacin de la cola
public boolean insertar(int elemento) throws Exception{
if (!isLlena()){
finCola = siguiente(finCola);
arrayCola[finCola] = elemento;
return true;
}else
throw new Exception("Overflow en la cola");
}
public int quitar() throws Exception{
if (!isVacia()){
int aux = arrayCola[inicioCola];
inicioCola = siguiente(inicioCola);
return aux;
}else
throw new Exception("Cola vacia ");
}

public void borrarCola(){
inicioCola = 0;


2
Estructura de Datos Cola Estructura de Datos
CARLOS SIGUA
UPS sede Cuenca
finCola = MAXTAMQ-1;
}


// mtodos de verificacin del estado de la cola
public boolean isVacia(){
return finCola == siguiente(inicioCola);
}
// comprueba si est llena
public boolean isLlena(){
return inicioCola == siguiente(siguiente(finCola));
}
// acceso a la colab
public int getElementoInicioCola() throws Exception{
if(!isVacia()){
return arrayCola[inicioCola];
}else
throw new Exception("Perdon la cola esta vacia");
}

public int getElementoFinCola() throws Exception{
if(!isLlena()){
return arrayCola[finCola];
}else
throw new Exception("Perdon la cola esta llena");
}
/**
* GETTERS AND SETTERS
*/
public int getMAXTAMQ() {
return MAXTAMQ;
}
public int getInicioCola() {
return inicioCola;
}
public int getFinCola() {
return finCola;
}
public int[] getArrayCola() {
return arrayCola;
}
}

BI BLI OGRAF A

[1
]
L. J. Aguilar, Listas Enlazadas, de Estructura de Datos en Java, Aravaca, Mc Graw Hill, 2008.
[2
]
www.slideshare.net, [En lnea]. Available: http://www.slideshare.net/nieves1988/estructura-de-datos-pilas-
y-colas.
[3
]
C. C. G., www.cec.uchile.cl, Universidad de Santiago de Chile Facultad de Ingenieria Departamento de
Ingenieria Industrial, [En lnea]. Available:
http://www.cec.uchile.cl/~luvasque/edo/java/manuales/Estructuras%20de%20Datos%20en%20Lenguaje%20J
ava%20(CCG).pdf.
[4
]
Torres, www.el.bqto.unexpo.edu.ve, [En lnea]. Available:
http://www.el.bqto.unexpo.edu.ve/ftorres/Prof/COLASCIRCULARES.pdf.