以递归方式反转Java中的链表
我一直在为一个类的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);}
虽然我在这里,有没有人看到这条路线有任何问题?
慕仙森
慕斯王
慕妹3146593