java - 如何从 LinkedList 中删除中间节点?

标签 java singly-linked-list

我正在尝试从链接列表中删除中间节点,以便访问该节点。我想知道以下两种方法之间是否存在差异,或者它们是否完成相同的事情?

public boolean deleteMiddle(Node middle){
    Node next = middle.next; //line 2
    middle.data = next.data;
    middle.next = next.next;
    return true;

}
public boolean deleteMiddle(Node middle){
    middle.data = middle.next.data;
    middle.next = middle.next.next;
    return true;

}

第一种方法是教科书推荐的方法,但在第一种方法(第 2 行)中创建节点“next”似乎是不必要的代码行。

最佳答案

我认为你可能是对的,它们是等价的(或者看起来确实是这样的)

在这两种情况下,如果您要删除的项目是列表中的最后一项(例如,如果 next 为空,则 next.next 是一个错误),看起来会出现空指针异常(在 next.next 上)。

如果你通过 null 当然那也将是一个 NPE。

关于java - 如何从 LinkedList 中删除中间节点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58586536/

相关文章:

c - 从 C 中的列表中删除

java - Apache Poi : Exception when reading spreadsheet data

java - 如何同步线程

java - 如何设置 IntelliJ Java App Engine 项目以使用服务(模块)

c++ - 既没有节点也没有数组的链表

c - 给定一个单向链表,如何从C中的指定节点确定头节点?

c++ - 允许在单链表 C++ 的合并排序中重复

java - 是否可以使用 Java 从 AS400 返回对象列表?

JavaFX - 将子阶段居中到父阶段

java - 反转单链表?