Una cola es una estructura de datos que permite ingresar los datos en nodos, estructurados en forma de una cola.
Nodo.java
Cola.java
Main.java
Salida:
Como se observa en la figura, el primer nodo en entrar es el primero en salir (FIFO: First In First Out)
Para implementarlo en Java, se crea una clase Cola y una clase Nodo, en donde nodo tiene un Nodo siguiente y un Objeto dato. La clase Cola tiene base(Nodo) = ultimo y cima(Nodo) = primero, y los métodos: push(insertar al final), pop(sacar primero) y peek(mostar primero).
Insertar a la cola:
- Se crea un nuevo nodo con el dato.
- Si primero esta vacío entonces primero y último es igual nuevo nodo y continuar con paso 4.
- Si la cola no esta vacía entonces el siguiente del último es igual al nuevo nodo y nuevo último es igual al nuevo nodo.
- Fin.
Sacar primero:
- Nodo auxiliar es igual a primero.
- Primero es igual al siguiente del primero.
- Retornar primero.
- Fin.
Mostar primero
- Retornar primero.
- Fin.
Nodo.java
/**
*
* @author robertoarmas
*/
public class Nodo{
private Object dato;
private Nodo siguiente;
public Nodo(Object dato){
this.dato = dato;
this.siguiente = null;
}
public Object getDato() {
return dato;
}
public void setDato(Object dato) {
this.dato = dato;
}
public Nodo getSiguiente() {
return siguiente;
}
public void setSiguiente(Nodo siguiente) {
this.siguiente = siguiente;
}
}
Cola.java
/**
*
* @author robertoarmas
*/
public class Cola{
private Nodo cima;
private Nodo base;
public Cola(){
this.cima = null;
}
public void push(Object dato){
Nodo nuevo = new Nodo(dato);
if(this.cima == null){
this.cima = this.base = nuevo;
return;
}
this.base.setSiguiente(nuevo);
this.base = nuevo;
}
public Object peek(){
return this.cima.getDato();
}
public Object pop(){
Nodo aux = this.cima;
this.cima = aux.getSiguiente();
return aux.getDato();
}
public void print(){
Nodo aux = this.cima;
while(aux != null){
System.out.println(aux.getDato());
aux = aux.getSiguiente();
}
}
}
Main.java
/**
*
* @author robertoarmas
*/
public class Main {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
Cola c = new Cola();
c.push("Primero en entrar Primero en salir");
c.push("Otro dato despues");
c.push("ultimo dato");
c.print();
System.out.println("+++++++++++++++++++++++++");
System.out.println("Mostrar cima:" + c.peek());
System.out.println("+++++++++++++++++++++++++");
System.out.println("Sacar cima:" + c.pop());
System.out.println("Nueva cima:" + c.peek());
System.out.println("+++++++++++++++++++++++++");
System.out.println("Sacar:" + c.pop());
System.out.println("--------------------------");
System.out.println("Imprimir cola");
c.print();
}
}
Salida:
Primero en entrar Primero en salir Otro dato despues ultimo dato +++++++++++++++++++++++++ Mostrar cima:Primero en entrar Primero en salir +++++++++++++++++++++++++ Sacar cima:Primero en entrar Primero en salir Nueva cima:Otro dato despues +++++++++++++++++++++++++ Sacar:Otro dato despues -------------------------- Imprimir cola ultimo datoDescargar el proyecto en GitHub
