jueves, 13 de octubre de 2011

COLAS

Definición:
Una cola es un tipo especial de lista abierta en la que sólo se pueden insertar nodos en uno de los extremos de la lista y sólo se pueden eliminar nodos en el otro. Además, como sucede con las pilas, las escrituras de datos siempre son inserciones de nodos, y las lecturas siempre eliminan el nodo leído.

Este tipo de lista es conocido como lista FIFO (First In First Out), el primero en entrar es el primero en salir.
tipos
Existen tres tipos de colas:
  • cola lineal (sencilla)
  • cola circular
  • cola doble (bicola)
Cola sencilla
La cola lineal es un tipo de almacenamiento creado por el usuario que trabaja bajo la técnica FIFO (primero en entrar primero en salir). Las colas lineales se representan gráficamente de la siguiente manera:

 



Las colas lineales tienen un grave problema, como las extracciones sólo pueden realizarse por un extremo, puede llegar un momento en que el apuntador sea igual al máximo número de elementos en la cola, siendo que al frente de la misma existan lugares vacíos, y al insertar un nuevo elemento nos mandará un error de overflow (cola llena).

Cola circular
En este tipo de cola existe un apuntador desde el último elemento al primero de la cola. 
La representación gráfica de esta estructura es la siguiente: 







La condición de vacío en este tipo de cola es que el apuntador F sea igual a cero.
Las condiciones que debemos tener presentes al trabajar con este tipo de estructura son las siguientes: 
• Over flow, cuando se realice una inserción. 
• Under flow, cuando se requiera de una extracción en la cola. 
• Vació

Cola doble o bicola
Esta estructura es una cola bidimensional en que las inserciones y eliminaciones se pueden realizar en cualquiera de los dos extremos de la bicola. Gráficamente representamos una bicola de la siguiente manera: 



Existen dos variantes de la doble cola: 
• Doble cola de entrada restringida. 
• Doble cola de salida restringida. 

La primer variante sólo acepta inserciones al final de la cola, y la segunda acepta eliminaciones sólo al frente de la cola


Operaciones
Las colas sólo permiten añadir y leer elementos:
  • Añadir: Inserta un elemento al final de la cola.
  • Leer: Lee y elimina un elemento del principio de la cola.
código de colas en java

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

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

//Encola un elemento
public void Encolar(Object x){
if(fondo==-1){
fondo++;
ArregloCola[fondo]=x;
}
else{
fondo++;
if(fondo==Cant_elem)
System.out.println("No hay campo");
else
ArregloCola[fondo]=x;
}
}

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

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

fondo--;
}
}

//Retorna si esta vacia la cola
public boolean VaciaCola(){
return (fondo<frente);
}

//Imprime al cola
public void Imprimir(){
int i=0;
System.out.print("La Cola es: ");
while(i<ArregloCola.length){
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("9");
nuevo.Encolar("10");
nuevo.Encolar("11");
nuevo.Encolar("12");
nuevo.Encolar("13");
nuevo.Desencolar();
nuevo.Encolar("1133");
nuevo.Imprimir();
    }
}

videos de colas



    Fuentes:

    No hay comentarios:

    Publicar un comentario