我已经为一个类做了一段时间的 Java 项目了。它是链表(这里称为 AddressList
,包含称为 ListNode
的简单节点)的实现。问题是所有的事情都必须用递归算法来完成。没有一种方法: public AddressList reverse()
,我可以把所有事情都做好
列表节点:
public class ListNode{
public String data;
public ListNode next;
}
现在,我的 reverse
函数只调用一个 helper 函数,该函数接受一个参数以允许递归。
public AddressList reverse(){
return new AddressList(this.reverse(this.head));
}
具有 private ListNode reverse(ListNode current)
签名的助手函数。
目前,我使用堆栈让它迭代地工作,但这不是规范所要求的。我在 C 语言中发现了一种递归反转算法,它可以手动将其转换为 Java 代码,而且它还能工作,但我对它一无所知。
编辑: 没关系,我同时也弄明白了。
private AddressList reverse(ListNode current, AddressList reversedList){
if(current == null)
return reversedList;
reversedList.addToFront(current.getData());
return this.reverse(current.getNext(), reversedList);
}
既然我来了,有人觉得这条路线有什么问题吗?