public Locator min () throws PriorityQueueEmptyException { if (S.isEmpty()) throw new PriorityQueueEmptyException("The priority queue is empty"); else return (Locator) S.first().element(); } public void insert(Locator loc) throws InvalidKeyException { locInsert((Item2) loc); } public Locator insert(Object k, Object e) throws InvalidKeyException { Item2 locitem = new Item2(k, e, null); return locInsert(locitem); } public void insertItem (Object k, Object e) throws InvalidKeyException { insert(k, e); } public void remove(Locator loc) { locRemove(loc); } public Object removeMin () throws PriorityQueueEmptyException { Object toReturn = minElement(); remove(min()); return toReturn; } public Object replaceElement (Locator loc, Object newElement) { Object oldElement = ((Item2) loc).element(); ((Item2) loc).setElement(newElement); return oldElement; } public Object replaceKey(Locator loc, Object newKey) throws InvalidKeyException { Item2 locitem = locRemove(loc); Object oldKey = ((Item2) loc).key(); locitem.setKey(newKey); locInsert(locitem); return oldKey; } }