习题2.1
将两个递增的有序链表合并为一个递增的有序链表。要求结果链表仍使用原来两个链表的存储空间,不另外占用其他的存储空间。表中不允许有重复的数据。
void MergeList(LinkList &La, LinkList &Lb, LinkList &Lc)
{//将两个递增的有序链表La,Lb合并为一个递增的有序链表Lc
LinkList pa, pb, pc,q;
pa = La->next; //pa是链表La的工作指针,初始化为首元结点
pb = La->next; //pb是链表Lb的工作指针,初始化为首元结点
Lc = pc = La; //用La的头结点作为Lc的头结点
while (pa&&pb) //两个链表La,Lb均为到达表尾结点
{
if (pa->data < pb->data)
{//谁小谁先进Lc
pc->next = pa;
pc = pa;
pa = pa->next;
}
else if (pa->data > pb->data)
{
pc->next = pb;
pc = pb;
pb = pb->next;
}
else
{//相等时去=取La的元素,删除Lb的元素
pc->next = pa;
pc = pa;
pa = pa->next;
q = pb->next;
delete pb;
pb = q;
}
}
pc->next = pa ? pa:pb;
delete Lb;
}
完整程序测试:
版权声明:
作者:maple
链接:https://www.maplezeroz.com/?p=247
来源:我的学习笔记
文章版权归作者所有,未经允许请勿转载。
THE END
0
二维码
海报
习题2.1
将两个递增的有序链表合并为一个递增的有序链表。要求结果链表仍使用原来两个链表的存储空间,不另外占用其他的存储空间。表中不允许有重复的数据。
void Merg……

共有 0 条评论