递归反转链接列表

时间:2016-03-01 16:34:14

标签: java recursion linked-list

这是一个常见问题,有多个参考,但实际上没有一个回答我的具体问题。在练习在线编码时,我遇到了递归反转链表的问题。这是我正常的代码。

void Reverse(Node curr){

   if(curr.next == null){
       head = curr;
       return;
   } 
   Reverse(curr.next);
   Reverse(curr.next);
   Node p = curr.next;
   p.next = curr;
   curr.next = null; 
}

但是我需要完成的方法签名如下,

Node Reverse(Node head){
}

Head不是静态值,所以即使我编写了辅助函数,我也无法访问它。有人可以帮我修改我现有的逻辑以与此方法签名对齐。

1 个答案:

答案 0 :(得分:0)

只需将您的头部声明为全局,然后在主体内部定义即可。

class Node{
    private Node list;

    void reverseMe(Node curr){
       //your method
    }

    Node reverse(Node list){
        reverseMe(list);
        return list;
    }

    public static void main(String[] args){
        list = createHead();
        //the rest
        list = reverse(head);
    }
}