domingo, 21 de mayo de 2017

Código Colas

Clase Nodo

package colas;

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 + '}';
    }
}

Clase Lista

package colas;

public class Lista {
    
    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);
 
    }
 
}

Clase Principal

package colas;

public class Principal {

    public static void main(String[] args) {
        
        Lista ls=new Lista();
        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();
    }
    
}

Resultado

No hay comentarios:

Publicar un comentario