用递归返回链表尾节点的方法

EYISEY 2012-08-05 08:18:25
一个单向链表
要求编写一个方法,通过导入链表中任意一个节点,就能返回这个链表的尾节点
以下是我的方法:
Node getEnd(Node n){
if(n.getNext()!=null)
{getEnd(n.getNext());}
return n;
}

(Node是我定义的节点类,getNext方法是一个返回某节点的后继节点的方法,返回类型也是Node,具体就不写了)


以上方法是不能编译通过的,因为如果后继存在,那么大括号里的语句不能提供返回值,而方法定义要求返回一个Node类型数据。
而如果为了编译通过而在大括号里添加语句返回某一个Node,那么此方法在递归调用找到链表尾巴前会不断返回好多无用的Node,造成显示结果混乱。

怎样做才能编译通过,而且只返回一个最后节点?
不懂内在的程序流程,抓瞎乱改,加else也不行,有什么办法么。

...全文
134 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
EYISEY 2012-08-05
  • 打赏
  • 举报
回复
哎呀 傻了,一头钻进面向对象里面去都忘了基本的结构化编程方法了,丢人了啊。
binglingwo1987 2012-08-05
  • 打赏
  • 举报
回复
可以用循环吧……不是要得到链表的最后一个节点吗?
Node getEnd(Node n){
Node p=n;
while(p.Next()!=null)//若p的下一个节点不为空
{p=p.Next();}//p等于它的下一个节点
return p;
}

不知道我理解的是否对不……仅供参考……呵呵……

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧