目前我正在创建一种在 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+" ");
}
通过这种方式,我使用 0 个参数调用反向方法,然后调用另一个反向方法。有什么方法可以使它们成为一种方法而不改变我的 LinkedList 类的其他方面吗?
提前致谢!
最佳答案
用一个公共(public)方法调用带有额外参数的私有(private)递归方法是很常见的。查看 Arrays.deepToString(Object[])
的源代码举个例子。
但是,在您的情况下,最好完全避免递归。递归的一个问题是您只能将方法调用嵌套到一定深度,然后才会出现 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 + " ");
}
关于java - 有什么办法可以结合这两种方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33967008/