void MergeList(SeqList A,SeqList B,SeqList *C)
/*合并顺序表A和B的元素到C中,并保持元素非递减排序*/
{
int i,j,k;
DataType e1,e2;
i=1;j=1;k=1;
while(i<=A.length&&j<=B.length)
{
GetElem(A,i,&e1); /*取出顺序表A中的元素*/
GetElem(B,j,&e2); /*取出顺序表B中的元素*/
if(e1<=e2) /*比较顺序表A和顺序表B中的元素*/
{
InsertList(C,k,e1); /*将较小的一个插入到C中*/
i++; /*往后移动一个位置,准备比较下一个元素*/
k++;
}
else
{
InsertList(C,k,e2); /*将较小的一个插入到C中*/
j++; /*往后移动一个位置,准备比较下一个元素*/
k++;
}
}
while(i<=A.length) /*如果A中元素还有剩余,这时B中已经没有元素*/
{
GetElem(A,i,&e1);
InsertList(C,k,e1); /*将A中剩余元素插入到C中*/
i++;
k++;
}
while(j<=B.length) /*如果B中元素还有剩余,这时A中已经没有元素*/
{
GetElem(B,j,&e2);
InsertList(C,k,e2); /*将B中剩余元素插入到C中*/
j++;
k++;
}
C->length=A.length+B.length; /*C的表长等于A和B的表长的和*/
}这个是函数调用
|