Ver Mensaje Individual
  #23 (permalink)  
Antiguo 20/07/2005, 12:29
Avatar de stock
stock
 
Fecha de Ingreso: junio-2004
Ubicación: Monterrey NL
Mensajes: 2.390
Antigüedad: 20 años, 5 meses
Puntos: 53
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 mainString [] 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