gpt4 book ai didi

java - 为什么他下面的代码不能在链表的特定位置插入节点?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:58:47 25 4
gpt4 key购买 nike

请看看下面的代码,让我知道它有什么问题?我正在尝试在链表中的给定特定位置插入一个节点。我们需要在插入后返回头节点的引用。

Node InsertNth(Node head, int data, int position) {
Node newNode = new Node();
newNode.data = data;

if(head==null){
newNode.next = head;
return newNode;
}
Node first = head;

while(position > 0 && head.next!=null){
head = head.next;
position -= 1;
}

newNode.next = head;
head = newNode;
return first;

}

最佳答案

是的,有一点不对劲。在 while 循环之后,您试图在 head 之前插入 newNode,但这不起作用。 head=newNode; 这行没用。

要么你需要另一个指针指向head之前的节点,这样你就可以在这两个指针之间插入newNode,或者你需要停止 while 循环前一步,并在 head 之后插入 newNode。这是第二种解决方案:

 while(position > 1 && head.next!=null){ //0 is replaced by 1 here
head = head.next;
position -= 1;
}

newNode.next = head.next;
head.next = newNode;
return first;

[编辑]

在此解决方案中,您需要通过在 while 循环之前添加以下代码来处理 position 等于 0 的特殊情况:

if(position==0) {
newNode.next = head.next;
return newNode;
}

关于java - 为什么他下面的代码不能在链表的特定位置插入节点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40498447/

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