交差/結合を行っている関数がありますが、2つの配列だけです。n-arrays: arr = {{1,2,3},{1,5,6},...,{1,9}} で動作するように改善する必要があります。
配列はソートされ、それらの要素はそれらの中で一意です。
例 (交差):
入力: {{1,2,3,4},{2,5,4},{4,7,8}}
出力: {4}
arr1[],arr2 - 配列
m,n - 配列の長さ 交差関数:
int printIntersection(int arr1[], int arr2[], int m, int n)
{
int i = 0, j = 0;
while(i < m && j < n)
{
if(arr1[i] < arr2[j])
i++;
else if(arr2[j] < arr1[i])
j++;
else /* if arr1[i] == arr2[j] */
{
printf(" %d ", arr2[j++]);
i++;
}
}
}
およびユニオン関数:
int printUnion(int arr1[], int arr2[], int m, int n)
{
int i = 0, j = 0;
while(i < m && j < n)
{
if(arr1[i] < arr2[j])
printf(" %d ", arr1[i++]);
else if(arr2[j] < arr1[i])
printf(" %d ", arr2[j++]);
else
{
printf(" %d ", arr2[j++]);
i++;
}
}
while(i < m)
printf(" %d ", arr1[i++]);
while(j < n)
printf(" %d ", arr2[j++]);
}