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!