/* * a simple priority queue class in Java */ package queues; public class PriorityQueue extends Queue { /** * Note that Enqueue is overloaded! */ public void Enqueue(Object a, int v) { Node t = new Node(a, v); if(hd == null) { hd = tl = t; t.prev = t.next = null; } else { Node ptr; for(ptr = tl; ptr != null && ptr.val > v; ptr = ptr.next) ; if(ptr == null) { hd.next = t; t.prev = hd; t.next = null; hd = t; } else if(ptr == tl) { tl.prev = t; t.next = tl; t.prev = null; tl = t; } else { t.next = ptr; t.prev = ptr.prev; ptr.prev.next = t; ptr.prev = t; } } } // Enqueue public int FrontKey() { if (hd == null) { System.err.println("Attempting to examine the front key " + "of an empty queue"); System.exit(-1); } return hd.val; } public int RearKey() { if (tl == null) { System.err.println("Attempting to examine the rear key " + "of an empty queue"); System.exit(-1); } return tl.val; } public void Print() { for(Node ptr = hd; ptr != null; ptr = ptr.prev) System.out.println("Item " + ptr.item + " and val is " + ptr.val); } };