设A和B是两个顺序表。编写一个将A和B中所有元素组成一个新的从小到大的有序顺序表C的算法,要求删除重复元素,并返回C表的长度。
int union (int A[ ],int na, int B[ ] int nb , int C[ ])
{
int i=0,j=0,k=0;
while(i
{
if(A[i]
{
if(k>0)
{
if(C[k-1]!=A[i])
C[k++]=A[i++];
else
++i;
}
else
C[k++]=A[i++];
}
else
{
if(k>0)
{
if(C[k-1]!=B[j])
(C[k++]=B[j++]);
else
++j;
}
else
C[k++]=B[j++];
}
}
while(i<na)
{
if(k>0)
{
if(C[k-1]!=A[i])
C[k++]=A[i++];
else
++i;
}
else
C[k++]=A[i++];
}
while(j<nb)
{
if(k>0)
{
if(C[k-1]!=B[j])
C[k++]=B[j++];
else
++j;
}
else
C[k++]=B[j++];
}
return k;
}