Java 递归函数,用于在链表末尾添加节点
下面是我编写的递归函数,用于在链表末尾添加节点。有人能告诉我这个功能是否正确吗Java 递归函数,用于在链表末尾添加节点,java,algorithm,recursion,linked-list,Java,Algorithm,Recursion,Linked List,下面是我编写的递归函数,用于在链表末尾添加节点。有人能告诉我这个功能是否正确吗 Node insertAtEnd(Node head, int data){ if(head.next == null){ Node temp= new Node(data); head.next= temp; return; } insertAtEnd(head.next,
Node insertAtEnd(Node head, int data){
if(head.next == null){
Node temp= new Node(data);
head.next= temp;
return;
}
insertAtEnd(head.next, data);
}
已经有一个名为Node的类,其定义如下:
class Node
{
int data;
Node next;
Node(int d) {data = d; next = null; }
}
您的方法有一个
节点
返回类型,因此您应该返回新的节点
:
Node insertAtEnd(Node head, int data) {
if (head.next == null) {
Node temp= new Node(data);
head.next= temp;
return temp;
}
return insertAtEnd(head.next, data);
}
或
为什么不运行它,看看递归是一个很好的概念来描述一些上下文,然后设计算法——但不是在这里。试着像人们一样用自然语言说话:这里没有什么是递归的提示:编程数据结构的一个基本部分是测试实现。理想情况下,您甚至在编写产品代码之前就编写测试用例。。。严肃地说:让别人检查你的代码应该像你做的最后一件事一样。。。在那之前,你自己做了很多事情来回答这个问题。(提问是可以的,但这个社区并不适合这样的问题)。正如我所说的:你想学习这些东西。而测试应该是你学习活动中必不可少的一部分!老实说,上面的内容甚至不应该编译。您可以有一个return语句而不提供值,但您的方法签名表示返回一个节点实例。抱歉,朋友,在考虑在这里放置代码进行“审阅”之前,请确保它至少已编译。我投票将此问题作为主题外的问题结束,因为堆栈溢出既不是测试也不是代码审阅服务。@SambeetMandal如果我认为我的答案不正确,我不会发布它。当然,如果我是你,我会运行代码以确保它正常工作。谢谢你的回复。我想补充一点,为什么你要在if语句中返回temp?我认为设置链接应该很好。如果我错了,请纠正我。@SambeetMandal方法签名是由你提出的。您决定insert方法返回某个节点实例。Eran只是想解释一下。老实说,OP的最后一句话就是为什么我决定否决投票并结束这个问题。因为他不是在寻找答案,他是在寻找一位家庭教师教他家庭作业的细节。。。
Node insertAtEnd(Node head, int data) {
if (head.next == null) {
head.next = new Node(data);
return head.next;
}
return insertAtEnd(head.next, data);
}