如何在 Java 中找到双向链表的最小元素
How to find the minimum element of a doubly linked list in Java
这是我的 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();
}
您的 while 循环中似乎有一个 bug/typo。试试这个(我也改进了一些小方面):
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;
在一般情况下,即使对于双向链表,您也无法比 线性搜索 做得更好 ;)
这是我的 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();
}
您的 while 循环中似乎有一个 bug/typo。试试这个(我也改进了一些小方面):
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;
在一般情况下,即使对于双向链表,您也无法比 线性搜索 做得更好 ;)