Tema : Estructura de datos
Pregunta que es una cola??
Respuesta : Una Cola es una estructura de datos de tipo FIFO (First In First Out) ósea que el primero que llega es el primero que sale. Tiene un método para agregar a la cola PUSH y otro para sacar de la cola POP.
El concepto de cola es muy sencillo y seguramente tu ya lo sabes, pro ejemplo cuando hacemos una cola para comprar boletos en el estadio, te formas y esperas tu turno, es igual con esta estructura.
2 -> 8 -> 1 -> 5 -> 3 -> 9 ->Null
^
Root
En el ejemplo anterior el primer numero en llegar fue el
2, y el ultimo el
9, si quisiéramos introducir otro elemento a la cola tendría que ir detrás del
9, ahora bien tomando en cuenta el concepto de cola si queremos sacar un elemento, forzosamente es el
2 y la cola quedaría así:
8 -> 1 -> 5 -> 3 -> 9 ->Null
^
Root
Ok, una vez comprendido el concepto, pasemos con JAVA
!! lo que vamos a ahcer es crear 3 archivos en la misma carpeta (para no hacer paquetes),
Nodo.java, Cola.java e
Implementa.java.
Nodo.java esta clase es donde almacenaremos los umeros y el puntero o referencia al siguiente NODO:
Código PHP:
/*
* Author: Crysfel Villa
* Created: Wednesday, July 20, 2005 12:58:26 PM
* Modified: Wednesday, July 20, 2005 12:58:26 PM
*/
public class Nodo{
public int value;
public Nodo ptr;
public Nodo(int v){
value = v;
ptr = null;
}
}
Cola.java Esta clase es la que forma la cola
Código PHP:
/*
* Author: Crysfel Villa
* Created: Wednesday, July 20, 2005 12:58:26 PM
* Modified: Wednesday, July 20, 2005 12:58:26 PM
*/
public class Cola
{
//PUNTERO RAIZ
private Nodo root;
//CONTRUCTOR
public Cola(){
//CUANDO SE CREA ESTA VACIO
root = null;
}
//METODO PARA AGREGAR UN ELEMENTO A LA COLA
public void push(int num){
Nodo newNodo = new Nodo(num);
//SI ESTA VACIO
if(root == null){
//LE ASIGNAMOS EL PRIMER NODO
root = newNodo;
}else{
//SI CONTIENE ALGO NOS TENEMOS QUE RECORRER HASTA EL FINAL
Nodo ptrTem = root;
//CON ESTE CICLO LLEGAMOS AL FINAL DE LA COLA
while(ptrTem.ptr != null)
ptrTem = ptrTem.ptr;
//YA EN EL FINAL LO INSERTAMOS AHI
ptrTem.ptr = newNodo;
}
}
//METODO PARA EXTRAER UN ELEMENTO DE LA COLA
public int pop(){
int valor = -12345;
//SI NO ESTA VACIA LA COLA
if(root!=null){
//TOMAMOS EL VALOR DEL PRIMER ELEMENTO
valor = root.value;
//NOS MOVEMOS AL SIGUIENTE
root = root.ptr;
}else{
System.out.println("La cola esta vacia :(");
}
return valor;
}
//CON ESTE METODO IMPRIMIMOS LA COLA COMPLETA
public void print(){
if(root == null){
System.out.println("La cola esta vacia");
}else{
Nodo ptrTem = root;
while(ptrTem.ptr != null){
ptrTem = ptrTem.ptr;
System.out.print("[ "+ptrTem.value+" ]-> ");
}
System.out.print("[ "+ptrTem.value+" ]-> \n");
}
}
}
Implementa.java Esta es la aplicacion que utiliza una cola dinamica
Código PHP:
/*
* Author: Crysfel Villa
* Created: Wednesday, July 20, 2005 12:58:26 PM
* Modified: Wednesday, July 20, 2005 12:58:26 PM
*/
public class Implementa{
public static void main( String [] args )
{
Cola cola = new Cola();
for(int i=0;i<10;i++)
cola.push((int)(Math.random()*10)+1);
cola.print();
System.out.println();
cola.pop();
cola.pop();
cola.pop();
cola.print();
}
}
Ok, espero halla quedado claro el concepto de cola, y espero que a alguien le pueda servir
have funn