有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java链表反向

我正在写一个LinkedList反向方法,在main方法中,我定义了temp并调用了反向方法(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` 当我打印反向方法返回的节点时,我得到了输出。。 o/p---10


共 (1) 个答案

  1. # 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;    
    }
    

    此外,我建议您使用其他一些反转方法

    祝你好运