2017-10-10 66 views
-1

我写一个LinkedList反向方法,在main方法中,我定义TEMP和反向调用方法(根目录包含链接列表)的java链表反向

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` 虽然我打印节点通过反向方法返回,我得到的输出.. o/p --- 10

+0

我对此表示怀疑,因为它“没有显示任何研究工作”。简单地[寻找你的标题](https://stackoverflow.com/search?q=java+linked+list+reverse)出现了几个已经回答过的话题。 –

回答

1

你打消了函数内部的调用返回,这就是为什么整个呼叫仅从第一个呼叫返回临时。这应该工作:

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与其他一些倒车方法。

祝你好运!

+0

谢谢@GustavoSánchez –