就地归并两个有序单链表(填空题,腾讯的面试题)

luo6620378xu 2012-09-26 02:41:08
给出的是填空题,代码如下:

Link * Meger(Link *a,Link *b)
{
Link *h=a,*p,*q;

while(b)
{
for(p=h;p&&p->val<b->val;q=p,p=p->next)
;

if(p==h)
{
_____;
}
else
{
_____;
}

p=b;
b=b->next;
________;
}

return h;
}


这个需要怎样填空呢?
...全文
397 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
luo6620378xu 2012-10-11
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

我去,大哥,你记错题目了,我看你这个题看了一下午一点思路都没有!!!!鄙视
[/Quote]

sorry啊,大哥!
不过在帖子的下面有说明的哦!
花花花湖 2012-09-27
  • 打赏
  • 举报
回复
我去,大哥,你记错题目了,我看你这个题看了一下午一点思路都没有!!!!鄙视
luo6620378xu 2012-09-26
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
引用楼主 的回复:
给出的是填空题,代码如下:
C/C++ code

Link * Meger(Link *a,Link *b)
{
Link *h=a,*p,*q;

while(b)
{
for(p=h;p&amp;&amp;p->val<b->val;q=p,p=p->next)
;

if(p==h)
{
_____;
}
e……

……
[/Quote]
十分有可能,因为是我同学记忆的。
huangxy10 2012-09-26
  • 打赏
  • 举报
回复
[Quote=引用楼主 的回复:]
给出的是填空题,代码如下:
C/C++ code

Link * Meger(Link *a,Link *b)
{
Link *h=a,*p,*q;

while(b)
{
for(p=h;p&&p->val<b->val;q=p,p=p->next)
;

if(p==h)
{
_____;
}
e……
[/Quote]

你是不是记错题目了,应该是q=b吧。

Link * Meger(Link *a,Link *b)
{
Link *h=a,*p,*q;

while(b)
{
//q最后指向最后一个比b节点元素小的节点,p指向第一个大于等于b节点元素的节点。
for(p=h;p&&p->val<b->val;q=p,p=p->next)
;

if(p==h) //p指向头节点,说明没有比b节点元素小的或者a链表为空
{
h = b; //所以第一个元素应该是b
}
else //如果有比b小的,则让链表中最后一个比b小的元素q作为b的前驱
{
q->next = b;
}

q=b; //用q记录下b,不能是p=b;否则就找不到q指向的节点了,链表就断了
b=b->next; //b后移一个节点
q->next = p; //p指向第一个大于等于b节点的元素,所以是b的后继
}

return h;
}

33,008

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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