如何在Java中查找双向链表的最小元素

时间:2017-11-12 13:30:13

标签: java doubly-linked-list linear-search

这是我的getMin()方法的代码。我无法获得进入while循环的方法。

public E getMin(){

Node<E> curr = header;
Node<E> min = curr;
E temporaryMinimum = header.getElement();
if(isEmpty()){
    return curr.getElement();
}

while (curr != null) {
    if (curr.getElement() != null) {
        if (temporaryMinimum.compareTo(curr.getElement()) > 0) {
            min = curr;
            temporaryMinimum = curr.getElement();
        }
            curr = curr.getNext();
        }
    }
    return curr.getElement();
 }

1 个答案:

答案 0 :(得分:1)

看起来你的while循环中有一个bug /拼写错误。试试这个(我也改进了一些小方面):

if (isEmpty()) { return null; }

Node<E> curr = header;
Node<E> min  = curr;
E minElement = curr.getElement();

while (curr != null) {
    if (curr.getElement() != null) {
        if (minElement.compareTo(curr.getElement()) > 0) {
            min = curr;
            minElement = curr.getElement();
        }
    }
    curr = curr.getNext();
}
return minElement;

在一般情况下,即使对于双向链接列表,也不能比线性搜索更好;)