/**
* 有序顺序表的合并: 已知顺序表LA、LB中的数据元素按值非递减有序排列,
* 现要求将LA和LB归并为一个新的顺序表LC,且LC中的数据元素仍按值非递减有序排列
*/
#include<stdio.h>
typedef int ElemType;
struct SqList
{
ElemType *elem;
int listsize;
int length;
};
void InputData(SqList &LA)
{
printf("请按升序输入一系列整数,用空格隔开,以-9999结尾:
");
int temp;
for(int i=0;;i++)
{
scanf("%d",&temp);
if(temp!=-9999)
{
LA.elem[i]=temp;
LA.length++;
}
else
break;
}
}
void MergeList_Sq(SqList LA,SqList LB,SqList &LC)
{
int i,j,k;
i=j=k=0;
LC.length=LA.length+LB.length;
LC.listsize=LA.length+LB.length;
LC.elem=new ElemType[LC.listsize];
while(i<=LA.length-1 && j<=LB.length-1){
ElemType pa=LA.elem[i];
ElemType pb=LB.elem[j];
if(pa<=pb)
{
LC.elem[k]=pa;
k++;i++;
}
else
{
LC.elem[k]=pb;
k++;j++;
}
}
while(i<=LA.length-1)
{
ElemType pa=LA.elem[i];
LC.elem[k]=pa;
k++;i++;
}
while(j<=LB.length-1)
{
ElemType pb=LB.elem[j];
LC.elem[k]=pb;
k++;j++;
}
}
void print(SqList LC)
{
for(int i=0;i<LC.length;i++)
printf("%d ",LC.elem[i]);
printf("
");
}
int main(void)
{
SqList LA,LB,LC;
LA.elem=new ElemType[100];
LA.length=0;
LA.listsize=100;
LB.elem=new ElemType[100];
LB.length=0;
LB.listsize=100;
InputData(LA);
InputData(LB);
MergeList_Sq(LA,LB,LC);
print(LC);
}