C/C++数据结构与算法速学速用大辞典
上QQ阅读APP看书,第一时间看更新

001 合并两个线性表中的元素

顺序表A和顺序表B的元素都是非递减排列,利用顺序表的基本运算,将它们合并成一个顺序表C,要求C也是非递减排列。例如,A=(8,17,17,25,29),B=(3,9,21,21,26,57),则C=(3,8,9,17,17,21,21,25,26,29,57)。

【分析】

顺序表C是一个空表,首先取出顺序表A和B中元素,并将这两个元素比较,如果A中的元素m1大于B中的元素n1,则将B中的元素n1插入C中,继续取出B中下一个元素n2与A中元素m1比较。如果A中的元素m1小于或等于B中的元素n1,则将A中的元素m1插入C中,继续取出A中下一个元素m2与B中元素n1比较。依次类推比较下去,直到一个表中元素比较完毕,将另一个表中剩余元素插入C中。

第1章\范例01-01.c

运行结果(见图1.4)

图1.4 算法运行效果

【说明】

在程序中,需要调用头文件“SeqList.h”时,因为其中包含有数据类型DataType和表示顺序表长度的宏名ListSize,所以在包含命令#include"SeqList.h"前首先需要给宏名赋值、进行类型定义,其语句次序如下: