《数据构造》试验汇报一试验内容:线性表学号:姓名:梁闪星一、上机试验的问题和规定(需求分析)2.线性表合并运算两个数据元素按值非递减有序排列的线性表,规定将两者归并为一种新表,新表中的数据元素仍按值非递减有序排列。规定分别采用次序和链式两种存储构造.。二、程序设计的基本思想,原理和算法描述:2.若采用次序存储构造,首先动态分派一种线性表Lc,并使pa,pb,pc分别指向La,Lb,Lc的基址,然后算出La,Lb的长度,在pa,pb所指元素都在La,Lb中时,把其中较小的一种插入到Lc中,并使指向较小元素的指针和pc分别加1。直到其中一种线性表中的元素所有插入到Lc中,把另一种线性表中的剩余元素也次序所有插入Lc中。若采用链式存储构造,首先设置三个指针pa,pb,pc,其中pa,pb分别指向La表和Lb表中目前待比较插入的结点,而pc指向Lc中的目前最终一种结点,若pa->data<=pb->data,则将pa所指结点链接到pc所指结点之后,否则将pb所指结点链接到pc所指结点之后。当一种为空时,阐明有一种表的元素已归并完,则只要将另一种表的剩余段链接在pc所指结点之后即可。三、调试和运行程序过程中产生的问题及采用的措施:调用函数时,参数传递错误。通过一步一步调试根据提醒进行修改。四、源程序及注释#include#include#defineINITSIZE100//线性表存储空间的初始分派量#defineLISTINCREMENT10//线性表存储空间的分派增量#defineOK1#defineERROR0#defineOVERFLOW-1typedefintElemType;typedefintStatus;typedefstruct{ElemType*elem;//存储空间基址intlength;//目前长度intlistsize;//目前分派的存储量(以sizeof(ElemType)为单位)}SqList;StatusInitList(SqList&L){//构造一种空的次序表L.L.elem=(ElemType*)malloc(100*sizeof(ElemType));if(!L.elem)exit(OVERFLOW);L.length=0;L.listsize=INITSIZE;return(OK);}voidAssign(SqList&L){//为次序表L的各元素赋值。inti,N;printf("PleaseinputtheNumberoftheSqList:");scanf("%d",&N);printf("Pleaseinputtheelements:");for(i=0;i