【发布时间】:2016-05-20 03:37:31
【问题描述】:
我无法使用 void 方法反转链表。我只允许使用两个指针节点(p,q)。我找到了几种方法,但不是一种无效的方法。我需要自己修改根列表(这就是为什么它必须是一个 void 方法)。该方法必须是递归的(我知道 void 方法中的基本定义不同)。这是我到目前为止所做的(不多)。
公共方法:
public void reverse(){
reverse(first, null);
}
私有方法:
private void reverse(Node p, Node q){
if(p.next!=null)
reverse(p.next,p);
p.next=q;
}
【问题讨论】:
-
所有你需要做的就是在到达末尾时更新列表的头部,它应该没问题。
-
是的,我做到了。我仍然找不到有效的递归 void 方法。它们都返回修改后的列表。我需要它以便列表本身反转。
-
为什么私有方法必须是
void?我知道公共方法是void,因为它必须更新first字段而不是返回任何内容,即更新列表的状态,但是为什么这意味着私有方法也必须是void? -
@Andreas 对。那么您是说我可以将私有方法设为 Node 方法而不是 void 方法,从而使用本文中的基本定义吗? link.
标签: java list recursion reverse