Búsqueda por palabras claves

No se olviden de consultar por palabras claves! Ejemplo de Estructura de datos en java, tutorial de estructura de datos
Búsqueda personalizada
Mostrando entradas con la etiqueta Queue java. Mostrar todas las entradas
Mostrando entradas con la etiqueta Queue java. Mostrar todas las entradas

viernes, 12 de mayo de 2017

Colas con prioridad ejemplo java

En este ejericio vamos a desarrollar en el lenguaje java un ejercicio que permita insertar datos en una cola con prioridad, para ello debemos crear 3 clases; la primera será la clase nodo la cual va tener 3 atributos, la segunda clase será clase Lista, la misma que tendrá el método para insertar datos según la prioridad que le corresponda en la lista. y finalmente la clase que realizará la invocación, instanciando los objetos necesarios para que funcione nuestro ejemplo de colas con prioridad.
En un proyecto de java crear una nueva Clase con nombre Nodo
package colasprioridad;

/**
 *
 * @author paulo.guerra.teran
 */
public class Nodo {
    
    private int valor;
    // Atributo para enlazar los nodos.
    private Nodo siguiente;
    
    int prioridad;

    Nodo(int valor, int prioridad) {
       this.valor=valor;
       this.prioridad=prioridad;
    }

    Nodo() {
       
    }
    
    public void Nodo(){
        this.valor = 0;
        this.siguiente = null;
    }

    public int getValor() {
        return valor;
    }

    public void setValor(int valor) {
        this.valor = valor;
    }

    public Nodo getSiguiente() {
        return siguiente;
    }

    public void setSiguiente(Nodo siguiente) {
        this.siguiente = siguiente;
    }

    @Override
    public String toString() {
        return "Nodo{" + "valor=" + valor + ", prioridad=" + prioridad + '}';
    }
    
    
    
}


Sobre el mismo paquete del proyecto crear una nueva Clase con nombre ListaSimple
package colasprioridad;

/**
 *
 * @author paulo.guerra.teran
 */
public class ListaSimple {

    private Nodo inicio;
    // Puntero que indica el final de la lista o el ultimo nodo.
    private Nodo ultimo;

    public void Lista() {
        inicio = null;
        ultimo = null;
    }



    public void agregar(int valor, int prioridad) {
        Nodo nuevo = new Nodo(valor, prioridad);

        if (inicio == null) {
            inicio = ultimo = nuevo;
        } else {

            if (inicio.prioridad > prioridad) {
                nuevo.setSiguiente(inicio);
                inicio=nuevo;
            }else{
              Nodo ant=null;
              Nodo sig=inicio;
              while(sig!=null && prioridad>=sig.prioridad){
                  ant=sig;
                  sig=sig.getSiguiente();
              }
              nuevo.setSiguiente(sig);
              ant.setSiguiente(nuevo);
              if(sig==null){
                 ultimo=nuevo;
              }
            
            }

        }
    }

    void imprimir() {
        Nodo aux = inicio;
        do {
            System.out.println("" + aux);
            aux = aux.getSiguiente();
        } while (aux != null);

    }

}


Sobre el mismo paquete del proyecto crear una nueva Clase con nombre
package listacircular;


/**
 *
 * @author paulo.guerra.teran
 */
public class ColaPrioridad {

    
    public static void main(String[] args) {
        ListaSimple ls=new ListaSimple();
        System.out.println("Agrego nodo (100) cualquier prioridad (2)");
        ls.agregar(100, 2);
        System.out.println("Agrego nodo (200) prioridad igual al primer nodo (2)");
        ls.agregar(200, 2);
        ls.imprimir();
        System.out.println("Agrego nodo (300) prioridad 1");
        ls.agregar(300, 1);
        ls.imprimir();
        System.out.println("Agrego nodo (400) de prioridad final");
        ls.agregar(400, 3);
        ls.imprimir();
        
        
    }
}


La ejecución del programa la podemos ver en la siguiente imagen!