一段时间以来,我一直在为一个班级从事 Java 项目。它是一个链表的实现(这里称为AddressList
,包含称为 的简单节点ListNode
)。问题是一切都必须使用递归算法来完成。我能够在没有一种方法的情况下做得很好:public AddressList reverse()
列表节点:
public class ListNode{
public String data;
public ListNode next;
}
现在我的reverse
函数只是调用一个辅助函数,它接受一个参数来允许递归。
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);
}
当我在这里时,有人发现这条路线有什么问题吗?