Estructura de Datos
Tipo Cola (FIFO)
| Figura 1: Una Cola |
Los elementos se eliminan de la cola en el mismo orden en que se almacenan y, por
consiguiente, una cola es una estructura de tipo FIFO (first-in, firs-out, primero en entrar-primero
en salir o bien primero en llegar-primero en ser servido). El servicio de atención a clientes en un
almacén es un ejemplo típico de cola. La acción de gestión de memoria intermedia (buffering) de
trabajos o tareas de impresora en un distribuidor de impresoras (spooler) es otro ejemplo típico
de cola.
Operaciones dentro de una Estructura tipo Cola
Las operaciones usuales en las colas son Insertar y Quitar. La operación Insertar añade
un elemento por el extremo final de la cola, y la operación Quitar elimina o extrae un elemento
por el extremo opuesto, el frente o primero de la cola. La organización de elementos en forma de
cola asegura que el primero en entrar es el primero en salir.
| Figura 2: Tipos de Datos |
En una cola, al igual que en una pila, los datos se almacenan de un modo lineal y el acceso a
los datos sólo está permitido en los extremos de la cola.
Colas Implementadas con Arrays
Las colas se implementan utilizando una estructura estática (arrays) o
una estructura dinámica (listas enlazadas, Vector...). La declaración de una Cola ha de contener un array para almacenar los
elementos de la cola y dos marcadores o apuntadores para mantener las posiciones frente y fin
de la cola, es decir, un marcador apuntando a la posición de la cabeza de la cola y el otro al primer
espacio vacío que sigue al final de la cola.
Cuando un elemento se añade a la cola, se verifica
si el marcador fin apunta a una posición válida, y entonces se añade el elemento a la cola y se
incrementa el marcador fin en 1. Cuando un elemento se elimina de la cola, se hace una prueba
para ver si la cola está vacía y, si no es así, se recupera el elemento de la posición apuntada por el
marcador de cabeza, y éste se incrementa en 1.
Tipos de Colas
Colas con Arrays circulares: Permite que la totalidad de sus posiciones se utilicen para almacenar elementos de la cola sin necesidad de desplazar elementos.



Bicolas-Colas de doble entrada:
Una bicola es un conjunto ordenado de elementos, al que se puede añadir o quitar ele-
mentos desde cualquier extremo del mismo. El acceso a la bicola está permitido desde cualquier
extremo. Se puede afirmar que una bicola es una cola bidireccional .
Este es un ejemplo de una cola en java utilizando un array:
El algoritmo se desarrollo en Netbeans primero adjuntare las capturas de su ejecución mostrando su funcionamiento y luego su código fuente:
1.- Primero Ingresamo el tamaño deseado de mi cola:

2.- Seleccionamos Ingresar los datos de la Cola deseada.

3.-Al final realizamos la impresión de la cola.

4.-Como paso final podemos eleiminar datos de nuestra cola asi como vaciarla o finalizar la ejecución.

A continuación se presentan las clases Utilizadas para el siguiente programa:
Este es un ejemplo de una cola en java utilizando un array:
El algoritmo se desarrollo en Netbeans primero adjuntare las capturas de su ejecución mostrando su funcionamiento y luego su código fuente:
1.- Primero Ingresamo el tamaño deseado de mi cola:
2.- Seleccionamos Ingresar los datos de la Cola deseada.
3.-Al final realizamos la impresión de la cola.
4.-Como paso final podemos eleiminar datos de nuestra cola asi como vaciarla o finalizar la ejecución.
A continuación se presentan las clases Utilizadas para el siguiente programa:
import javax.swing.JOptionPane;
public class ColaArray
{
private int MAX;
private int[] COLA;
private int FRENTE;
private int FINAL;
public ColaArray()
{
this.MAX = 100;
this.FRENTE = 0;
this.FINAL = 0;
this.COLA = new int[this.MAX+1];
}
public ColaArray(int MAX)
{
this.MAX = MAX;
this.FRENTE = 0;
this.FINAL = 0;
this.COLA = new int[this.MAX+1];
}
public boolean IsColaLlena()
{
if(this.FINAL == this.MAX)
{
return true;
}
else
{
return false;
}
}
public boolean IsColaVacia()
{
if(this.FRENTE == this.FINAL)
{
return true;
}
else
{
return false;
}
}
public void InsertarCola()
{
if(this.IsColaLlena())
{
JOptionPane.showMessageDialog(null,"LA COLA ESTÁ LLENA");
}
else
{
int ITEM;
ITEM = Integer.parseInt(JOptionPane.showInputDialog(null,"INGRESE EL ITEM A AGREGAR"));
this.FINAL++;
this.COLA[FINAL] = ITEM;
}
}
public void EliminarCola()
{
if(this.FRENTE == this.FINAL)
{
JOptionPane.showMessageDialog(null,"LA COLA ESTA VACIA");
}
else
{
for(int i=FRENTE;i < FINAL - 1;i++)
{
COLA[i] = COLA[i+1];
}
FINAL--;
}
}
public void MostrarCola()
{
if(this.IsColaVacia())
{
JOptionPane.showMessageDialog(null,"LA COLA ESTÁ VACIA\n NO HAY DATOS QUE MOSTRAR","MOSTRAR DATOS",JOptionPane.WARNING_MESSAGE);
}
else
{
String MOSTRAR = "";
for(int i=FRENTE+1;i<=FINAL;i++)
{
MOSTRAR = MOSTRAR + COLA[i]+"\n";
}
JOptionPane.showMessageDialog(null,"TOTAL ES : "+this.FINAL+"\n"+"LOS DATOS DE LA COLA SON : \n"+MOSTRAR,"MOSTRAR DATOS",JOptionPane.INFORMATION_MESSAGE);
}
}
public void VaciarCola()
{
FRENTE = 0;
FINAL = 0;
}
}
import javax.swing.JOptionPane;
public class MainColaArray
{
public static ColaArray Cola;
public static void main(String[] ARGUMENTOS)
{
int MAX;
MAX = Integer.parseInt(JOptionPane.showInputDialog(null,"INGRESE EL TAMAÑO DE LA COLA"));
Cola = new ColaArray(MAX);
MenuCola();
}
public static void MenuCola()
{
int Opcion;
do
{
Opcion = Integer.parseInt(JOptionPane.showInputDialog(null,
"1. INGRESAR DATOS\n"+
"2. ELIMINAR DATOS\n"+
"3. OBSERVAR DATOS\n"+
"4. VACIAR COLA\n"+
"5. SALIR\n"+
"--------------------------------------------------------\n"+
"INGRESE LA OPCION [1 - 5]","MENU COLA",JOptionPane.QUESTION_MESSAGE));
switch(Opcion)
{
case 1: Cola.InsertarCola();break;
case 2: Cola.EliminarCola();break;
case 3: Cola.MostrarCola();break;
case 4: Cola.VaciarCola();break;
case 5: System.exit(0);break;
default: JOptionPane.showMessageDialog(null,"INGRESE UNA OPCION VALIDA \n","ERROR OPCION",JOptionPane.WARNING_MESSAGE);break;
}
}
while(true); //-- SEGUIRA HASTA QUE OPCION SEA IGUAL A 5
}
}
No hay comentarios.:
Publicar un comentario