题目描述
将两个有序顺序表合成一个新的有序顺序表,并由函数返回结果顺序表。
#include<iostream>
using namespace std;
#define Maxsize 1000
typedef struct
{
int data[Maxsize];
int length;
}sqList;
int merge(sqList A, sqList B, sqList &C)
{
int i=0, j=0, k = 0;
if (A.length + B.length > Maxsize)
return -1;
while (i < A.length && j < B.length)
{
if (A.data[i] < B.data[j])
{
C.data[k] = A.data[i];
i++, k++;
}
else
{
C.data[k] = B.data[j];
j++, k++;
}
}
while (i < A.length)
{
C.data[k] = A.data[i];
i++, k++;
}
while (j < B.length)
{
C.data[k++] = B.data[j++];
}
C.length = k;
return 1;
}
int main()
{
sqList A = { {1,3,5,7,9},5 };
sqList B = { {2,4,6,8,10},5 };
sqList C = { {0},0 };
merge(A, B, C);
if (merge(A, B, C) == 1)
{
cout << "Merged seq:";
for (int i = 0; i < C.length; i++)
{
cout << C.data[i] << " ";
}
cout << endl;
}
else
{
cout << "Merge failed due to size limitation." << endl;
}
return 0;
}