gpt4 book ai didi

java - 无法将链接列表的最后位置设置为 NULL

转载 作者:太空宇宙 更新时间:2023-11-04 12:08:44 25 4
gpt4 key购买 nike

我编写了从链接列表中删除特定位置处的节点的代码。

static Node deletesNodebyposition(Node root,int position)
{
if(root == null)
return null;

Node head = root;
int x=1;
while(x < position && root !=null){
root = root.next;
x++;
}
if(root.next !=null) {
root.data = root.next.data;
root.next = root.next.next;
}
else
root = null;

return head;
}

代码工作正常,直到我选择要删除的最后一个节点。当我输入删除节点的最后一个位置时,我试图将该节点设置为 NULL。但是当我从函数返回并打印结果列表时,我仍然找到最后一个 Node.js 文件。我无法理解为什么最后一个节点无法设置为 NULL。

最佳答案

假设有一个链表,3->4->6->7->1并且您必须删除最后一个位置(第5个位置)的数字,

“root”的类型是“Node”而不是 LinkedList。在您的代码中,当您到达最后一个位置时,变量“root”将保存存储数据“1”的位置的地址,例如,

根=@addrlocation

当你分配时,

根=空

“root”变量不指向任何内容,实际上您不会删除任何内容。这里的关键点是你必须将最后一个节点的“下一个”节点设置为“null”

在上面的链表中,最后一个保存数据“7”的节点仍将保存“下一个”节点的地址作为@addrlocation。因此,对于您提到的特定情况,链接列表不会因您的更改而产生任何影响。

您可以引用前一个节点“previous”来解决问题。我修改了您的代码并粘贴在下面,

static Node deletesNodebyposition(Node root,int position)
{
if(root == null)
return null;

Node head = root;
Node previous = null;
int x=1;
while(x < position && root !=null){
previous = root;
root = root.next;
x++;
}
previous.next = root.next;
return head;
}

关于java - 无法将链接列表的最后位置设置为 NULL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40074048/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com