已知两个排序相同的单链表A.B,合并成一个新链表C并且不改变它的排序性的算法.

这个用C++怎么编啊??... 这个用C++怎么编啊?? 展开
 我来答
chiconysun
2013-09-22 · TA获得超过2.2万个赞
知道大有可为答主
回答量:5410
采纳率:92%
帮助的人:2713万
展开全部
这是递增合并成递增,如果是递减,略加修改就可以了

需要按数据类型定义自行修改其中的内容
思路:
设待合并有头结点单链表为a 和b,合并到c
设置三个指针pa, pb 和pc 分别指向a, b 和c 的当前结点
开始时, pa, pb 和pc 分别指向a, b 和c 的头结点
pa 和pb 向后扫描,依次合并元素值小的结点到pc 的当前表尾,直到某个链表合并完毕
某链表归并完成后,需要处理另一个链表剩余的元素

void Merge(LinkList a, LinkList b, LinkList c)
{ // 单链表a 和b 元素不减,原地合并为递增有序链表c
Node *pa, *pb, *pc;
pa = a->next;
pb = b->next;
pc = c->next;
while (pa && pb)
{
if (pa->data <= pb->data)
{
pc->next = pa;
pc = pa;
pa = pa->next;
}
else
{
pc->next = pb;
pc = pb;
pb = pb->next;
}
}
pc->next = pa ? pa : pb; // 追加剩余结点
free(a);
free(b);
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式