SWUSTOJ941: 有序顺序表的合并操作的实现
#include<stdio.h>
#include<iostream>
using namespace std;
#define MaxSize 50
typedef int ElemType;
typedef struct
{
ElemType data[MaxSize];
int length;
}SqList;
void InputList(SqList& L)
{
int n;
cin >> n;
for (int i = 0; i < n; i++)
{
cin >> L.data[i];
}
L.length = n;
}
void OutputList(SqList L)
{
for (int i = 0; i < L.length; i++)
{
cout<<L.data[i]<<" ";
}
}
bool MergeList(SqList A, SqList B, SqList& C)
{
if (A.length + B.length > MaxSize)
{
return false;
}
int i = 0, j = 0, k = 0;
while (i < A.length && j < B.length)
{
if (A.data[i]<=B.data[j])
{
C.data[k++] = A.data[i++];
}
else
{
C.data[k++] = B.data[j++];
}
}
while (i < A.length)
{
C.data[k++] = A.data[i++];
}
while (j < B.length)
{
C.data[k++] = B.data[j++];
}
C.length = k;
return true;
}
int main()
{
SqList A,B,C;
InputList(A);
InputList(B);
MergeList(A, B, C);
OutputList(C);
return 0;
}