Я бы начал с чего-то вроде этого.Общая идея заключается в том, что у вас есть внутренний список, и когда вы вставляете новый элемент, вы выполняете бинарный поиск, чтобы найти его место в этом списке.Таким образом, ваш внутренний список всегда сортируется, поэтому, когда вы вызываете remove (), вы просто берете последний (или первый, в зависимости от того, как вы упорядочиваете) элемент.
Отказ от ответственности: Это следует рассматривать какпсевдокод.Я точно знаю, что с этим есть проблемы.Он предназначен только для отправной точки.
public class PQueueImpl<T> implements PQueue<T> {
private List<T> internalQueue;
public void insert(T item){
int insertionPoint = Collections.binarySearch(internalQueue, item);
internalQueue.add(insertionPoint, item);
}
public T remove(){
return internalQueue.remove(internalQueue.size() - 1);
}
}