题目描述:
将两个有序顺序表合并成一个新的有序顺序表,并由函数返回结果顺序表
算法思想:
没什么可说的,归并
核心代码:
int InitSqList(SqList &L)
{
//按照严版数据结构,不是采用data[MaxSize]而是采用*elem就在此动态申请内存
L.length=0;
return 0;
}
SqLi
st merge_A_B(SqList &L1,SqList &L2)
{
//王道参考答案的做法是:
/*
if(L1.length+B.length>C.MaxSize)
return false;
我写的程序中这句L.length++;就省略,在程序的最后补上L.length=k;
*/
SqList L;//或者在参数表中SqList &L;
InitSqList(L);
int i,j,k;
i=j=k=0;
while(i<L1.length&&j<L2.length)
{
if(L1.data[i]<L2.data[j])
{
L.length++;//感觉这句在考试中应该不出现,默认先赋给L足够的内存空间
L.data[k++]=L1.data[i++];
}
else
{
L.length++;//感觉这句在考试中应该不出现,默认先赋给L足够的内存空间
L.data[k++]=L2.data[j++];
}
}
while(i<L1.length)
{
L.length++;//感觉这句在考试中应该不出现,默认先赋给L足够的内存空间
L.data[k++]=L1.data[i++];
}
while(j<L2.length)
{
L.length++;//感觉这句在考试中应该不出现,默认先赋给L足够的内存空间
L.data[k++]=L2.data[j++];
}
return L;
}