#include<iostream>
using namespace std;
#define InitSize 50
typedef int ElemType;
typedef struct{
ElemType *data;
int length, MaxSize;
}SqList;
void InitList(SqList &L)
{
L.data = new ElemType[InitSize];
L.length = 0;
L.MaxSize = InitSize;
}
bool Merge(SqList A, SqList B, SqList &C)
{
int i = 0, j = 0, k = 0;
if (A.length + B.length > C.MaxSize)
return false;
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;
}
void printList(SqList L)
{
for (int i = 0; i < L.length; i++)
cout << L.data[i] << " ";
cout << endl;
}
void delet(SqList C)
{int i=0,k=0;
while(i < C.length)
if(C.data[i]==C.data[i+1])
while(i<C.length)
{C.data[i]=C.data[i+1];
i++;}
k++;
C.length-=k;
}
int main()
{
SqList A;
InitList(A);
SqList B;
InitList(B);
A.length = 6; B.length = 5;
for (int i = 0; i < A.length; i++)
//A.data[i] = 2*i + 1;
cin>>A.data[i];
for (int i = 0; i < B.length; i++)
//B.data[i] = 2*(i + 1);
cin>>B.data[i];
SqList C;
InitList(C);
printList(A);
printList(B);
if (Merge(A,B,C))
{delet(C);
printList(C);}
return 0;
}
有