我正在编写一个LinkedList反向方法,在main方法中,我正在定义temp并调用reverse方法(root包含链表)
Node temp=null;
r=a.reverse(root,temp);
public Node reverse(Node node,Node temp){
if(node!=null){
Node n=new Node();
n.data=node.data;
n.next=temp;
temp=n;
node=node.next;
reverse(node,temp);
}
return temp;
}
我的死记硬背包含10,20,30,40,50` 当我打印逆向方法返回的Node时,我得到了输出.. o / p --- 10
答案 0 :(得分:1)
你忽略了函数本身内部的调用返回,这就是为什么整个调用只返回第一次调用的 temp 。这应该有效:
Node temp=null;
r=a.reverse(root,temp);
public Node reverse(Node node,Node temp) {
if (node!=null){
Node n=new Node();
n.data=node.data;
n.next=temp;
temp=n;
node=node.next;
return reverse(node,temp); // Here now we return this result
}
return temp;
}
另外,我建议您this question使用其他一些反转方法。
祝你好运!