/************************************************************* 顺序表的合并 实现文件 更新于2020年4月13日 **************************************************************/ #include <stdio.h> #include <stdlib.h> #include "Seqlist.h" void SL_Initiate(SqList &L) // 顺序表的初始化,即构造一个空的顺序表 { L.elem = (ElemType*)malloc(sizeof(ElemType)*MAXSIZE); L.length=0; } void SL_Free(SqList &L) // 释放顺序表 { free(L.elem); } bool SL_IsEmpty(SqList L) // 判断顺序表是否空 { return L.length==0; } bool SL_IsFull(SqList L) // 判断顺序表是否满 { return L.length==MAXSIZE; } void SL_Create(SqList &L,int n) // 输入n个数据元素,创建一个顺序表L { int i; L.length=n; for(i=0; i<n; i++) scanf("%d", &L.elem[i]); } void SL_Print(SqList L) // 输出整个顺序表 { if (L.length==0) { printf("The slist is empty.\n"); return; } for (int i=0; i<L.length; i++) printf("%d ", L.elem[i]); printf("\n"); } void MergeList_Sq(SqList LA,SqList LB,SqList &LC) //已知顺序表LA和LB的元素按值非递减排列 //归并LA和LB得到新的顺序表LC,LC的元素也按值非递减排列。 { // 请在这里补充代码,完成本关任务 /********** Begin *********/ LC.length=LA.length+LB.length; int i,j=0,k,p=0; //将两个表里的数据合并到一个数组里先 for(i=0;i<LC.length;i++){ if(i>=0&&i<LA.length) LC.elem[i]=LA.elem[i]; if(i>=LA.length&&i<LC.length){ LC.elem[i]=LB.elem[j]; j++; } } //再对新数组使用插入排序(随便什么排序方法其实都行) int m,n,itmp=0; for(m=1;m<LC.length;m++){ itmp=LC.elem[m]; for(n=m-1;n>=0;n--){ if(LC.elem[n]<=itmp) break; LC.elem[n+1]=LC.elem[n]; } LC.elem[n+1]=itmp; } /********** End **********/ }