0.题目分析
头指针为La Lb的有序单链表,归并两单链表为Lc,保持有序性
La = 1,3,4,9,11
Lb = 6,7,8,10,12
Lc = 1,3,4,6,7,8,9,10,11,12
1.初始定义
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLE -1
#define OVERFLOW -2
typedef int Status;
typedef int ElemType;
//类型定义
typedef struct LNode{
ElemType data;
struct LNode *next;
}LNode,*LinkList;
2.代码实现
void MergeList_L(LinkList &La,LinkList &Lb,LinkList &Lc){//将两个有序链表合并为一个有序链表
LinkList pa = La->next; //设置指针分别指向两单链表的第一元素
LinkList pb = Lb->next;
LinkList pc = Lc = La;//初始将La的头结点作为Lc的头结点
while(pa && pb){ //pa pb指针均不为NULL时
if(pa->data<=pb->data){ //比较二者数据大小 pc指向较小元素 同时移动指针
pc->next = pa;
pc = pa;
pa = pa->next;
}
else{
pc->next = pb;
pc = pb;
pb = pb->next;
}
}
pc->next = pa ? pa : pb; //最后若pa不为NULL,则将pc->next = pa;否则指向pb 即将两表的剩余元素连接到Lc链表上
free(Lb); //释放Lb头结点
}
3.线性表链式基本操作说明
——————END——————
作者注:
记录学习,分享经验。
有兴趣可以关注博主,以后还会持续更新内容哦~