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