public class SortedSequencePriorityQueue2
extends SortedSequencePriorityQueue implements PriorityQueue2 {
public SortedSequencePriorityQueue2 (Comparator comp) {
super(comp);
}
protected Locator locInsert(Item2 locitem) throws InvalidKeyException {
Position p, curr;
Object k = locitem.key();
if (!comp.isComparable(k))
throw new InvalidKeyException("The key is not valid");
else
if (S.isEmpty())
p = S.insertFirst(locitem);
else if (comp.isGreaterThan(k, key(S.last())))
p = S.insertAfter(S.last(),locitem);
else {
curr = S.first();
while (comp.isGreaterThan(k, key(curr)))
curr = S.after(curr);
p = S.insertBefore(curr,locitem);
}
locitem.setPosition(p);
return (Locator) locitem;
}
protected Item2 locRemove(Locator loc) {
S.remove(((Item2) loc).position());
return (Item2) loc;
}