Двойная очередь приоритетов с использованием дважды связанного списка

#java #generics #linked-list #comparator #doubly-linked-list

#java #общие сведения #связанный список #компаратор #дважды связанный список

Вопрос:

Я пытаюсь реализовать очередь с двусторонним приоритетом, используя дважды связанный список

 public class ListDoubleEndedPriorityQueue<AnyType> implements DoubleEndedPriorityQueue<AnyType>{

private Comparator<? super AnyType> cmp;
private Node<AnyType> first = null;
private Node<AnyType> last  = null;
private int size = 0;
  

это мой класс узла

 private static class Node<AnyType>{

    private Node<AnyType> next;
    private Node<AnyType> prev;
    private AnyType e;

    public Node(AnyType data){
        next = prev = null;
        e = data;
    }
    public AnyType getElement(){
        return this.e;
    }
    public Node<AnyType> next(){
        return next;
    }
    public Node<AnyType> prev(){
        return prev;
    }
    public Node<AnyType> setNext(Node<AnyType> x){
        return this.next = x;
    }
    public Node<AnyType> setPrev(Node<AnyType> x){
        return this.prev = x;
    }
}
  

И я должен реализовать несколько методов, подобных этому:

  public AnyType findMax ( ){
    Node<AnyType> curr = first;
    Node<AnyType> max = first;
    int i = 0;
    while(i < size){
        if(cmp.compare(curr.e, max.e) > 0){
            max = curr;
            break;
        }
        curr = curr.next();
    }
    return max.e;
}
  

по-видимому, проблема связана с этим утверждением: cmp.compare (curr.e, max.e)
но я понятия не имею, что я делаю не так, может кто-нибудь, пожалуйста, помогите мне, спасибо.

Комментарии:

1. Возможно, вам следует удалить break , чтобы он продолжил поиск.

2. Вы совершенно правы, спасибо, но у меня все еще есть проблема с компаратором

3. Если вы хотите внести какой-либо вклад в вашу проблему с помощью вашего компаратора, вам лучше рассказать нам, в чем проблема? То есть, что он делает и чем он отличается от того, что он должен делать? Также кажется, что ваш findMax() не учитывает случай, когда очередь является emapty?

4. Вы также можете отредактировать вопрос и добавить свой код компаратора.

5. в этом проблема, предполагается, что это универсальный класс, который работает с несколькими типами, мой профессор отправил нам файл .class для его тестирования, но после декомпиляции, похоже, в нем нет ничего о comparator или методе сравнения