求耐心的【高手】详细解答高程中的又一升序链表合并问题

kakajenifer 2003-08-25 02:36:43
以下是高程书的例题。看不懂变量的意思。

想请问:
【1】a,b,p,q这四个变量分别做什么用?求详细解答,在每个语句里分别做什么用的?
【2】程序中的思路是如何的?能否详细解释一下?

题目:函数merge(intNode *a,intNode *b)将两个升序链表a和b合并成一个升序链表并返回首指针。


-----
typedef struct element
{
int val;
struct element *next;
}intNode;
intNode *merge(intNode *a,intNode *b)
{ intNode *h=a,*p,*q;
while(b)
{ for(p=h;p&&p->val<b->val;q=p,p=p->next);
if(p==h)___①__; /* h=b */
else ___②__; /* q->next=b */
q=b;b=b->next;
___③___; /* q->next=p */
}
return h;
}
...全文
31 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
JAMES001 2003-08-29
  • 打赏
  • 举报
回复
数据结构中,链表应该算是比较简单的结构
而且,我觉得现在的高程一般不会考这方面
看历年的考题就可看出
zhouyaudee 2003-08-26
  • 打赏
  • 举报
回复
sp
pebble 2003-08-25
  • 打赏
  • 举报
回复
a 和 b 是两个要合并的升序链表的头指针
a, b是两个升序排列的链表,现在要把他们合并在一起,构成一个升序排列链表
方法就是在a中寻找b中元素的插入位置,然后将b中的元素逐个插入
q和p用来指明插入位置,q指出要插入的位置的前面一个元素,p指明后面的元素位置,然后插入的时候就插入在他们两个之间
wangmin_yjitx 2003-08-25
  • 打赏
  • 举报
回复
如果A、B的第一个值b<a,则由B的表头作归并后链表的表头。
for 循环的意思就是用两个指针一直遍历A链表到P当前的值大于或等于B当前的值,然后将B插入到Q的后面,这样一直到B链表为空全部排序完成为止。

wangmin_yjitx 2003-08-25
  • 打赏
  • 举报
回复
就是把两个升序的链表归并到原来的a链表上。

2,947

社区成员

发帖
与我相关
我的任务
社区描述
就计算机等级考试、软件初、中、高级不同级别资格考试相关话题交流经验,共享资源。
c1认证c4javac4前端 技术论坛(原bbs)
社区管理员
  • 软件水平考试社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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