有没有办法将这两种方法结合起来?

idu*_*ude 4 java methods overloading linked-list data-structures

目前我正在创建一种方法来反转java中的链表,但它需要两种方法:

public void reverse(){
    reverse(head);
}

private void reverse(Node h){
    if(h.next==null){
        System.out.print(h.data+" ");
        return;
    }

    reverse(h.next);
    System.out.print(h.data+" ");   
}
Run Code Online (Sandbox Code Playgroud)

这样我用0参数调用reverse方法,然后调用另一个反向方法.有没有办法让他们1方法而不改变我的LinkedList类的其他方面?

提前致谢!

Pau*_*ton 5

有一个公共方法调用带有额外参数的私有递归方法是很常见的.有关此Arrays.deepToString(Object[])示例,请参阅源代码.

但是,在您的情况下,最好完全避免递归.递归的一个问题是你只能在获得a之前将方法调用嵌套到某个深度StackOverflowError.

另一种方法是使用循环代替.以下将有效:

public void reverse(){
    List<Node> nodes = new ArrayList<>();
    for (Node n = head; n != null; n = n.next)
        nodes.add(n);
    for (int i = nodes.size() - 1; i >= 0; i--)
        System.out.print(nodes.get(i).data + " ");
}
Run Code Online (Sandbox Code Playgroud)