本关任务:已知两个顺序表A和B,数据元素按值非递减有序排列,现将A和B归并成一个新的顺序表C,使C中的数据元素仍按值非递减有序排列。
例如:
设 A=(3,5,8,11) B=(2,6,9,15,20)
则 C=(2,3,5,6,8,9,11,15,20)
相关知识
为了完成本关任务,你需要掌握:1. 顺序表的类型定义,2.顺序表涉及的主要操作。
顺序表的类型定义
定义如下:
#define MAXSIZE 100 //最大长度
typedef int ElemType; // 数据元素的类型
typedef struct {
ElemType *elem; //指向数据元素的起始地址
int length; //线性表的当前长度
}SqList;
顺序表涉及的主要操作
主要操作如下:
顺序表的初始化:构造一个最多可存储MAXSIZE个数据元素的顺序表,并将其初始状态设置为length=0,即为空表。该操作函数具体定义如下:
void SL_Initiate(SqList* L)
释放顺序表:释放L->elem所指向的用于存储数据元素的存储空间。该操作函数具体定义如下:
void SL_Free(SqList* L)
判断顺序表是否为空:若为空表,则返回true,否则返回false。该操作函数具体定义如下:
bool SL_IsEmpty(SqList L)
判断顺序表是否已满:若顺序表达到最大长度,则返回 true,否则返回false。该操作函数具体定义如下:
bool SL_IsFull(SqList L)
创建顺序表:输入n个数据元素,创建一个顺序表。该操作函数具体定义如下:
void SL_Create(SqList* L,int n)
输出顺序表: 输出整个顺序表。该操作函数具体定义如下:
void SL_Print(SqList L)
顺序表的合并: 已知顺序表LA和LB的元素按值非递减排列,归并LA和LB得到新的顺序表LC,LC的元素也按值非递减排列。该操作函数具体定义如下:
void MergeList_Sq(SqList LA,SqList LB,SqList *LC)
编程要求
根据提示,在右侧编辑