#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 или методе сравнения