赞
踩
头指针为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
#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;
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头结点 }
——————END——————
作者注:
记录学习,分享经验。
有兴趣可以关注博主,以后还会持续更新内容哦~
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。