超级easy的研究生考试题目,帮帮忙。
编写一个函数,求集合A和集合B的并集,
集合的值为整型数据。集合A的数据放在一维数组a中,
集合B的数据放在一维数组b中,数组中的数据按升序排列,
并集放在数组c中,也按升序排列。
[解决办法]
求集合A与B的并集需要注意的是两个集合中可能存在的相同的元素。
代码入下:
void ArrayCat(int *nArrayA, int nElementCountA, int *nArrayB, int nElementCountB, int *nArrayC)
{
int nC = 0;
for(int nA = 0, int nB = 0; nA < nElementCountA || nB < nElementCountB;)
{
if( nB < nElementCountB && nA < nElementCountA)
{
if( nArrayA[nA] < nArrayB[nB] )
{
nArrayC[nC++] = nArrayA[nA++];
}
else if( nArrayB[nB] < nArrayA[nA])
{
nArrayC[nC++] = nArrayB[nB++];
}
else
{
nArrayC[nC++] = nArrayB[nB++];
nA++;
}
}
else if(nB < nElementCountB)
nArrayC[nC++] = nArrayB[nB++];
else if(nA < nElementCountA)
nArrayC[nC++] = nArrayA[nA++];
}
}
void main()
{
int nArrayA[10] = {1, 2, 3, 4, 5};
int nArrayB[10] = {3, 4, 5, 6, 7};
int nElementCountA = 5;
int nElementCountB = 5;
int nArrayC[20];
ArrayCat(nArrayA, nElementCountA, nArrayB, nElementCountB, nArrayC);
}