/** * If PQ is non-empty, remove from PQ an item , X, of highest priority in PQ * * @return - highest priority item */ public ComparisonKey remove() { ComparisonKey highestKey = null; ListNode highestListNode = itemList.next; if (highestListNode != null) { highestKey = highestListNode.item; ListNode nextHighestListNode = highestListNode.next; // now reset the link if (nextHighestListNode != null) { itemList.next = nextHighestListNode; } else { itemList.next = null; } count--; } LOG.printDebugMessage("Removed highestKey=" + highestKey.toString()); return highestKey; }
public void insert(ComparisonKey newKey) { LOG.printDebugMessage("Insert " + newKey.toString()); if (isEmpty()) { LOG.printDebugMessage("Adding first link!"); itemList.next = new ListNode(newKey, null); } else { // insert the new item in order so we maintain a sorted list ListNode prevListNode = itemList; ListNode currListNode = itemList.next; boolean isInserted = false; while (!isInserted) { if (currListNode != null && newKey.compareTo(currListNode.item) >= 0) { LOG.printDebugMessage("currListNode is null or newKey > currListNode.item"); ListNode newListNode = new ListNode(newKey, currListNode); prevListNode.next = newListNode; isInserted = true; } else if (currListNode == null) { LOG.printDebugMessage("reached the end of the linked list"); ListNode newListNode = new ListNode(newKey, null); prevListNode.next = newListNode; isInserted = true; } else { LOG.printDebugMessage("move to next pointer"); prevListNode = currListNode; currListNode = currListNode.next; } // if(currListNode==null) } // while(!isInserted) } count++; }