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!