我已经在一个类的Java项目上工作了一段时间了。它是链表(这里称为AddressList
,包含称为ListNode
的简单节点)的实现。问题是,所有的事情都必须用递归算法来完成。除了一种方法以外,我可以做所有的事情:public AddressList reverse()
ListNode:
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);
}
我在这里的时候,有没有人看到这条路线有什么问题?
https://stackoverflow.com/questions/354875
复制相似问题