Java 这段代码具体做什么?我怎样才能改变它?

Java 这段代码具体做什么?我怎样才能改变它?,java,data-structures,linked-list,Java,Data Structures,Linked List,此方法删除给定prev节点之后的新节点。有人可以一步一步地向我解释一下这段代码具体做了什么,以及我如何修改它,以便在prev是列表上的最后一个节点时不会出错 @param prev-插入位置之前的节点。prev.next().next()获取下一个节点之后的节点(从给定节点开始)。然后将其传递给prev.setNext方法,使其成为下一个节点。这实际上删除了prev和next节点之间的节点 基本上,它需要prev->next_1->next_2…并将其转换为prev->next_2… 如果pre

此方法删除给定prev节点之后的新节点。有人可以一步一步地向我解释一下这段代码具体做了什么,以及我如何修改它,以便在prev是列表上的最后一个节点时不会出错

@param prev-插入位置之前的节点。

prev.next().next()
获取下一个节点之后的节点(从给定节点开始)。然后将其传递给
prev.setNext
方法,使其成为下一个节点。这实际上删除了
prev
next节点之间的节点

基本上,它需要
prev->next_1->next_2…
并将其转换为
prev->next_2…

如果
prev
是列表中的最后一个节点,那么
next()
应该返回
null
(我假设)。如果是这种情况,您可以执行空检查以避免错误

public void deleteAfter(Node prev){
    prev.setNext(prev.next().next());
}

你有一些节点,在列表的某个地方。我已经强调过了

public void deleteAfter(Node prev){
    if(prev.next() != null) {
        prev.setNext(prev.next().next());
    }
}
第一个调用是设置“prev”的下一个链接
prev.setNext(…)
,但下一个链接将设置为什么?它将被设置为“下一个的下一个”或(以上一个开始)

prev.next()将是

而prev.next().next()将是

因此,在设置操作之后,您的安排如下

... - node - node - prev - node - (node) - ...

请注意,prev的新“下一个节点”以前是prev的下一个、下一个节点。

代码设置一个新的
next
,这样,如果您有
a->b->c
,现在您就有了
a->c

为了避免错误,您可以检查next是否返回null,或者如果节点上存在这样的方法,可以调用
hasNext

... - node - node - prev  node--node - ...
                        \------/

它取消链接要删除的节点之前的节点之间的链接,然后将要删除的节点之前的节点链接到要删除的节点之后的节点

如果您曾经问自己“这段代码在做什么?”,那么很有可能以更具描述性的方式编写代码。例如:

if(prev.next() != null){
  ...
}

直接回答:此代码从链接列表中删除节点

它先将要删除的节点之前的节点之间的链接断开,然后将要删除的节点之前的节点链接到要删除的节点之后的节点,这真是太多了,我会试着把我的脑袋绕过去:’)我想你不知道我如何编辑它,这样它就不会出错了?如果它在节点传递给方法后删除了节点,那么参数不应该被称为“curr”吗?非常感谢,伙计!非常有用:DEveryone喜欢图表。
... - node - node - prev - node - (node) - ...
... - node - node - prev  node--node - ...
                        \------/
if(prev.next() != null){
  ...
}
public void deleteNodeAfter(Node index) {
    // Borrowed from Bill the Lizard's answer
    if (index.next() != null) {
        index.setNext(index.next().next());
    }
}