Java 这段代码具体做什么?我怎样才能改变它?
此方法删除给定prev节点之后的新节点。有人可以一步一步地向我解释一下这段代码具体做了什么,以及我如何修改它,以便在prev是列表上的最后一个节点时不会出错 @param prev-插入位置之前的节点。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.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());
}
}