Una cola es una estructura de datos que almacena elementos en una lista y permite acceder a los datos por uno de los dos extremos de la lista. Un elemento se inserta en la cola (parte final) de la lista y se suprime o elimina por el frente (parte inicial, frente) de la lista. Las aplicaciones utilizan una cola para almacenar elementos en su orden de aparición o concurrencia.
Los elementos se eliminan de la cola en el mismo orden en que se almacena, por ello una cola es una estructura de tipo FIFO (first-in/first-out) es decir que el dato primero en entrar será el primero en salir.
A continuación se muestra un vídeo explicativo sobre las Colas en Java:
Al igual que las pilas, las colas se pueden implementar utilizando una estructura estática (arreglos), o una estructura dinámica (listas enlazadas, vectores, etc).
Operaciones de las Colas:
Al igual que las Pilas, las colas poseen dos operaciones imprescindibles que son para añadir elementos o "encolar" y para eliminar elementos o "desencolar", al igual que poseen operaciones para manipular y mostrar su contenido, las cuales son:
CrearCola: Inicia la cola como vacía
Cola vacía: Comprobar si la cola no tiene elementos
Cola llena: Comprobar si la cola está llena de elementos
Frente: Obtiene el elemento frente o primero de la cola
Tamaño de la cola: Número de elementos máximo que puede contener la cola
En resumen...
Una cola es una estructura de datos del tipo FIFO, con dos operaciones imprescindibles: encolar y desencolar, al primer elemento se lo conoce como "frente o principio" y al último como "final".
Ejemplo práctico:
A continuación se muestra un programa simple, en donde se aplican las operaciones encolar y desencolar elementos en una Cola. El programa está hecho con listas simples enlazadas en el cual se insertan 5 elementos, utilizando la función insertar (encolar). Después se utiliza la función extraer (encolar) para eliminar el primer nodo. Finalmente se cuenta cuantos elementos tiene la nueva lista, e imprime los valores.
Clase Nodo:
Clase Nodo:
public class Nodo
{
//Declaracion de atributos
private int dato;
private Nodo next;
//Constructor
public Nodo(int dato){
this.dato=dato;
}
//Metodos getter and setters
public int getDato()
{
return dato;
}
public void setDato(int dato)
{
this.dato = dato;
}
public Nodo getNext()
{
return next;
}
public void setNext(Nodo next)
{
this.next = next;
}
//Metodo toString
public String toString()
{
String s=" "+dato+" ";
return s;
}
}
Clase Colas:
public class Colas
{
//Declaración de atributos
private Nodo inicio;
private Nodo termino;
//Constructor sin parametros
public Colas()
{
inicio=null;
termino=null;
}
//Metodo insertar
public void insertar(int dato)
{
Nodo i=new Nodo(dato);
i.setNext(null);
if(inicio==null & termino==null)
{
inicio=i;
termino=i;
}
termino.setNext(i);
termino=termino.getNext();
}
//Metodo extraer dato
public int extraer()
{
int dato=inicio.getDato();
inicio=inicio.getNext();
return dato;
}
//Metodo para comprobar que la cola no esta vacia
public boolean estaVacia()
{
boolean cola=false;
if(inicio==null & termino==null)
{
cola=true;
System.out.println("La cola esta vacia");
}
else
{
System.out.println("La cola no esta vacia");
cola=false;
}
return cola;
}
//Metodo para contar los elementos de la cola
public int contar()
{
int contador=0;
Nodo c=this.inicio;
while(c!=null)
{
contador++;
c=c.getNext();
}
System.out.println("Numero de datos en la cola: "+contador);
return contador;
}
//Metodo toString
public String toString()
{
Nodo c=this.inicio;
String s="";
while(c!=null)
{
s=s+c.toString();
c=c.getNext();
}
return s;
}
}
Clase Principal:
public class Principal
{
public static void main(String[] args)
{
Colas cola1=new Colas();
cola1.insertar(46);
cola1.insertar(12);
cola1.insertar(87);
cola1.insertar(125);
cola1.insertar(30);
cola1.extraer();
cola1.estaVacia();
cola1.contar();
System.out.println(cola1.toString());
}
}
Captura de pantalla del programa:
Referencias:
Academia. (2015). “Listas, pilas y colas en Java”. Recuperado el 18 de noviembre del 2015 de: http://www.academia.edu/9865829/Listas_pilas_y_colas_en_Java







Muy buen contenido gracias
ResponderEliminarExcelente contenido, me ayudaste a entender mejor.
ResponderEliminarInsertas 5 elementos y solo está mostrando 4, no entiendo el por qué
ResponderEliminarlee esta parte y entenderás el porqué... "Después se utiliza la función extraer (encolar) para eliminar el primer nodo. Finalmente se cuenta cuantos elementos tiene la nueva lista, e imprime los valores."
Eliminarpara que te muestre todos loe elementos de la cola incluyendo el primero solo debes borrar la línea que dice "cola1.extraer();" y listo.