我正在学习 Java 中的双向链表,并且找到了有关使用特定键删除节点的教程。
这是代码:
public Node deleteKey(int key) {
Node current = first;
while (current.getData() != key) {
current = current.getNext();
if (current == null) {
return null;
}
}
if (current == first) {
first = current.getNext();
} else {
current.getPrevious().setNext(current.getNext());
}
if (current == last) {
last = current.getPrevious();
} else {
current.getNext().setPrevious(current.getPrevious());
}
return current;
}
我想问一下这段代码是否正确。在我看来这是不正确的,因为他还需要这样做:
current.setNext(null);
current.setPrevious(null);
最佳答案
调用current.setNext(null)
和current.setPrevious(null)
是不必要的,因为在调用deleteKey(int key)
之后,列表中的任何 Node
都不会包含对已删除的 Node
的引用(由 current
引用),因此无论 >Node
是已删除的 Node
所引用的节点。
关于java - Java中删除双向链表中的节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54530276/