java - Java中删除双向链表中的节点

标签 java data-structures linked-list doubly-linked-list

我正在学习 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/

相关文章:

java - 使用它进行文件写入时如何处理 hashCode() 的负值

仅使用点云作为查询点的 D 维 k 最近邻搜索的 C++ 数据结构

c - 在 C 中实现最小堆

c - 如何使用递归显示列表的反向?

c - 使用递归的链表 - 意外的输出

javafx组合框可编辑自动完成

java - 从剪贴板粘贴图像

java - 根据其他变量设置变量值

algorithm - 大文本中给定关键字的最短短语的长度

java - 链表插入节点后