gpt4 book ai didi

java - 链表在中间插入

转载 作者:行者123 更新时间:2023-12-01 22:11:41 24 4
gpt4 key购买 nike

Node InsertNth(Node head, int data, int position) {


Node start,curr,temp;
start=head;
curr=start;
if(start==null)
{
temp=new Node();
temp.data=data;
temp.next=null;
return head;
}
else if(position==0)
{
temp=new Node();
temp.data=data;
temp.next=start;
return head;
}
else
{
for(int i=0;i<position;i++)
{
System.out.println("i:"+i);
curr=start;
start=start.next;
}
temp=new Node();
temp.data=data;
curr.next=temp;
temp.next=start;
return head;
}
}

在上面的代码中,我在 for 循环中打印了“i”的值。在控制台中,我得到的输出为

i:0
i:0
i:1
i:0
i:1
i:2
i:3

Exception in thread "main" java.lang.NullPointerException
at Node.InsertNth(Solution.java:49)
at Solution.main(Solution.java:88)

为什么“i”没有正确递增?如果它运行良好,那么我可以在中间执行插入。

最佳答案

问题不在于 for 循环,问题在于:该方法被调用 3 次

我刚刚将您的部分代码更改为:

else
{
int count =0;
for(int i=0;i<position;i++)
{
try{
System.out.println("i :" +i);
curr=start;
start=start.next;
count++;
}
catch(Exception e){

}
}
System.out.println("count: " +count);

temp=new Node();
temp.data=data;
curr.next=temp;
temp.next=start;
return head;
}

并在 hackerrank 中提交并打印:

i :0
count: 1
i :0
i :1
count: 2
i :0
i :1
i :2
i :3
count: 3

正在打印

    System.out.println("count: " +count);

3次意味着你的方法被调用三次,而不是你想象的一次。

要编写正确的代码,只需确保 for 循环中 start 不为 null 即可。我没有尝试更改您的代码,只是添加了使其工作所需的内容。

Node InsertNth(Node head, int data, int position) {
Node start,curr,temp;
start=head;
curr=start;
if(start==null || position == 0)
{
temp=new Node();
temp.data=data;
temp.next=start;
head=temp;
return head;
}
else
{
for(int i=0;i<position && start!=null ;i++)
{
curr=start;
start=start.next;
}
temp=new Node();
temp.data=data;
curr.next=temp;
temp.next=start;
return head;
}
}

关于java - 链表在中间插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31707315/

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