miércoles, 12 de octubre de 2011

Colas

Una COLA es una lista de elementos en la que éstos se introducen por un extremo
eliminan por otro.
Los elementos se eliminan en el mismo orden en el que se insertaron. Por lo tanto el primer elemento que entra a la cola será el primero en salir.
Debido a esta características la cola también reciben el nombre de estructuras FIFO(First-In,First-out: primero en entrar primero en salir).

Ejemplo:

• Las personas esperando para usar un teléfono público. • Las personas que esperan para ser atendidas en una caja de un banco.
Representación de COLAS.
Las colas no existen como estructuras de datos estándares en los lenguajes de programación. Las colas pueden representarse mediante el uso de:
• Arreglos • Listas enlazadas.

Con Arreglos

Debe definirse un tamaño máximo para la cola y dos variables auxiliares:

• Una de ellas para que guarde la posición del primer elemento de la cola (FRENTE).
• Otra para que guarde la posición del último elemento de la cola (FINAL).

OPERACIONES CON COLAS.

• Insertar un elemento.
• Eliminar un elemento.

Las colas pueden manejarse de diferentes maneras, según el tipo de aplicación:

• Cola Lineal o Simple
• Cola Circular
• Bicola o doble cola
• Cola de prioridades



Cola Lineal o Simple

Las inserciones se llevarán a cabo por el FINAL de la cola, mientras que las eliminaciones se harán por el FRENTE.
NOTA: Existe el problema de desperdicio de espacio, conforme se van eliminando elementos. Es decir el espacio liberado al eliminar un elemento del arreglo no se reutiliza.

COLA CIRCULAR

Para hacer un uso más eficiente de la memoria disponible se trata a la cola como a una estructura circular. Es decir, el elemento anterior al primero es el último.

DOBLE COLA (BICOLA).
Es una generalización de un estructura de cola simple. En una doble cola, los elementos pueden ser insertados o eliminados por cualquiera de los extremos. Es decir, se pueden insertar y eliminar valores tanto por el FRENTE como por el FINAL de la cola.



Variantes de las Bicolas o dobles colas.

Doble cola con Entrada restringida: Permite que las eliminaciones puedan hacerse por cualquiera de los dos extremos.



Doble cola con Salida restringida: Permite que las inserciones puedan hacerse por cualquiera de los dos extremos.





Programa de Colas

class ColaArreglo
{
Object[] ArregloCola;
int frente=0,fondo=0,elem_to;
int Num_elem=5;


ColaArreglo()
{
ArregloCola=new Object[Cant_elem];
frente=0;
fondo=-1;
elem_to=0;
}


public void Encolar(Object x)
{
if(fondo==-1)
{
fondo++;
ArregloCola[fondo]=x;
}

else
{
fondo++;
if(fondo==Num_elem)
System.out.println("No hay espacio suficiente");
else
ArregloCola[fondo]=x;
}

}


public void Desencolar()
{
if(VaciaCola())
System.out.println("No hay Elementos");
else
{

for(int i=frente;i);
ArregloCola[i]=ArregloCola[i+1];
}
ArregloCola[fondo]=null;

fondo--;
}
}

public boolean VaciaCola()
{
return (fondo)
}


public void Imprimir()
{
int i=0;
System.out.print("La Cola es: ");
while(i
System.out.print(ArregloCola[i]+" ");
i++;
}
System.out.println("");
System.out.println("");
}

}

class ColasA
{
public static void main(String[]args)
{
ColaArreglo nuevo=new ColaArreglo();
nuevo.Encolar("1");
nuevo.Encolar("2");
nuevo.Encolar("3");
nuevo.Encolar("4");
nuevo.Encolar("5");
nuevo.Desencolar();
nuevo.Encolar("7");
nuevo.Imprimir();
}
}

No hay comentarios:

Publicar un comentario