简单递归搞不清,求助

winmenaruto 2011-06-30 11:08:48
已知两个链表head1 和head2 各自有序,请把它们合并成一个链表依然有序,这次要求用递归方法进行
Node * MergeRecursive(Node *head1 , Node *head2)
{
if ( head1 == NULL )
return head2 ;
if ( head2 == NULL)
return head1 ;
Node *head = NULL ;
if ( head1->data < head2->data )
{
head = head1 ;
head->next = MergeRecursive(head1->next,head2);
}
else
{
head = head2 ;
head->next = MergeRecursive(head1,head2->next);
}
return head ;
}


我写了2个有序的链表
4--->2---》null
10---3----1---NULL
过程是(4,10)----(2,10)---(null,10)
由于null,返回10,然后2就指向10了,这么不就不是有序的了。。。程序不对还是我递归搞错啦
...全文
94 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
一根烂笔头 2011-06-30
  • 打赏
  • 举报
回复
递归就是你在楼下,需要一样东西,但是东西又在楼上!一层一层爬上去,取到东西,再一层层的下来!完事!
pandm 2011-06-30
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 winmenaruto 的回复:]
引用 2 楼 pandm 的回复:


if ( head1->data < head2->data )
改为
if (head1->data > head2->data)

请问这种程序写起来有什么思路?我只能看,但是自己写不出。。。
[/Quote]


你给出的链表是降序的,所以要取两个链表里较大头部的那个。
TimZhuFaith 2011-06-30
  • 打赏
  • 举报
回复
类似于归并。。。2L那样改下就可以了
hustlaofan 2011-06-30
  • 打赏
  • 举报
回复
淡疼,思路不是给你了吗, 实在无语
winmenaruto 2011-06-30
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 pandm 的回复:]


if ( head1->data < head2->data )
改为
if (head1->data > head2->data)
[/Quote]
请问这种程序写起来有什么思路?我只能看,但是自己写不出。。。
pandm 2011-06-30
  • 打赏
  • 举报
回复

if ( head1->data < head2->data )
改为
if (head1->data > head2->data)
hustlaofan 2011-06-30
  • 打赏
  • 举报
回复
(4,10)(4,3)(2,3) (2,1) (null,1) —>依次返回1,2,3,4,10

64,646

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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