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.