链式有序表的合并
1.简单描述:
线性表LA和LB中的数据元素按值非递减有序排列,现要求将LA和LB归并为一个新的线性表LC,且LC中的数据元素仍按值非递减有序排序。
A=(3,5,8,11) B=(2,6,8,9,11)
C =(2,3,5,6,8,8,9,11,11)
2.算法思想
- 1.从线性表LA中取出第一个数据元素;
- 2.从线性表LB中取出第一个数据元素;
- 3.将两个元素进行比较;
- 4.将较小的元素插入到LC中;
- 5.将第4步中小元素所在线性表指针下移,再取出一个元素,和刚 才较大的数据元素比较。
- 6.重复4-5步直至LA和LB的指针均指向最尾端停止。
分析:算法主要包括线性表链式结构的三种操作:搜索、比较、插入
3.代码实现
#include <iostream>
using namespace std;
typedef int ElemType;
//1.定义存储表示
typedef struct LNode
{
ElemType data; //数据域
struct LNode *next; //指针域
}LNode,*LinkList;
//2.初始化线性表La,Lb,Lc
void InitList_L (LinkList &La,LinkList &Lb,LinkList &Lc)
{
La =new LNode;
La ->next =NULL;
Lb =new LNode;
Lb ->next =NULL;
Lc =new LNode;
Lc ->next =NULL;
cout<<"线性表初始化成功\n\n"<<endl;
}
//3.建立单链表
void CreateList_R(LinkList