c 语言求两个数组的并集
时间: 2024-09-19 16:08:41 浏览: 29
js代码-2.求多个数组之间的并集
在C语言中,求两个数组的并集通常涉及到创建一个新的数组,然后遍历这两个原始数组,将每个元素添加到新数组中,避免重复。这里有一个简单的示例,假设我们有两个整数数组:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义一个函数来查找某个元素是否存在于目标数组中
int is_in(int target[], int size, int item) {
for (int i = 0; i < size; ++i) {
if (target[i] == item)
return 1;
}
return 0;
}
// 求两个数组的并集
void union_arrays(int array1[], int size1, int array2[], int size2, int* result, int max_size) {
// 遍历第一个数组并添加元素到结果数组
for (int i = 0; i < size1; ++i) {
if (!is_in(result, max_size - size1] = array1[i];
++max_size;
}
}
// 如果第二个数组还有元素没加入,并且结果数组仍有空间
if (size2 > 0 && max_size < max_size) {
// 遍历第二个数组,添加不在结果数组中的元素
for (int j = 0; j < size2; ++j) {
if (!is_in(result, max_size - size1, array2[j])) {
result[max_size++] = array2[j];
}
}
}
}
// 测试函数
int main() {
int arr1[] = {1, 2, 3, 4};
int arr2[] = {4, 5, 6};
int len1 = sizeof(arr1) / sizeof(arr1[0]);
int len2 = sizeof(arr2) / sizeof(arr2[0]);
int combined[len1 + len2]; // 结果数组大小等于两数组之和
int max_size = len1;
union_arrays(arr1, len1, arr2, len2, combined, max_size);
// 打印并集结果
printf("联合后的数组: ");
for (int i = 0; i < max_size; ++i) {
printf("%d ", combined[i]);
}
printf("\n");
return 0;
}
```
运行这个程序,你会得到两个数组的合并结果。注意,此代码假定输入数组足够小,可以在内存中一次性存储它们的并集。
阅读全文