c语言写两个集合的额交集
时间: 2024-10-09 14:03:48 浏览: 7
在C语言中,如果你想要计算两个集合(通常是无序的元素列表)的交集,你可以使用数组或者结构体来存储元素,并遍历它们来找出共同的部分。这里提供一种简单的示例,假设我们有两组整数数组:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义一个结构体表示集合元素
typedef struct {
int value;
} SetItem;
// 函数声明:查找两个集合的交集
void findIntersection(int arr1[], int size1, int arr2[], int size2, SetItem result[], int* count);
int main() {
int array1[] = {1, 2, 3, 4, 5};
int array2[] = {4, 5, 6, 7, 8};
// 创建结果集合数组
SetItem intersection[10]; // 这里假设最大交集不超过10个元素
int intersection_count = 0;
// 找到交集
findIntersection(array1, 5, array2, 5, intersection, &intersection_count);
printf("交集: ");
for (int i = 0; i < intersection_count; i++) {
printf("%d ", intersection[i].value);
}
return 0;
}
// 实现交集查找函数
void findIntersection(int arr1[], int size1, int arr2[], int size2, SetItem result[], int* count) {
*count = 0;
for (int i = 0; i < size1 && *count < size2; i++) {
for (int j = 0; j < size2 && arr1[i] == arr2[j]; j++, (*count)++) {
result[*count].value = arr1[i];
}
}
}
```
在这个例子中,`findIntersection`函数会寻找`array1`和`array2`中相同的值,并将它们放入`intersection`数组中。最后在`main`函数中打印出交集。