首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Java中递归地反转链表

在Java中递归地反转链表
EN

Stack Overflow用户
提问于 2008-12-10 01:51:59
回答 28查看 185K关注 0票数 107

我已经在一个类的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);
}

我在这里的时候,有没有人看到这条路线有什么问题?

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/354875

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档