输入两个集合,用C语言求它们的交集
时间: 2024-09-09 13:01:47 浏览: 63
c语言基础-c语言编程基础之数组操作示例-两个数组的交集.zip
在C语言中,求两个集合的交集通常需要手动实现,因为C语言标准库中并没有直接提供这样的函数。这里提供一个简单的示例,假设两个集合A和B都存储在数组中,并且数组中的元素都是有序的且没有重复元素。以下是一个简单的实现:
```c
#include <stdio.h>
// 函数用于求两个有序数组的交集
void intersection(int *arr1, int len1, int *arr2, int len2, int *result, int *resultSize) {
int i = 0, j = 0;
while (i < len1 && j < len2) {
if (arr1[i] < arr2[j]) {
i++;
} else if (arr1[i] > arr2[j]) {
j++;
} else {
// 当两个元素相等时,找到一个交集元素
result[(*resultSize)++] = arr1[i];
i++;
j++;
}
}
}
int main() {
int arr1[] = {1, 2, 4, 5, 6};
int arr2[] = {2, 3, 5, 7};
int len1 = sizeof(arr1) / sizeof(arr1[0]);
int len2 = sizeof(arr2) / sizeof(arr2[0]);
int result[len1]; // 交集结果数组大小不超过最小的输入数组
int resultSize = 0;
intersection(arr1, len1, arr2, len2, result, &resultSize);
// 打印交集结果
printf("The intersection of two sets is: ");
for (int i = 0; i < resultSize; i++) {
printf("%d ", result[i]);
}
printf("\n");
return 0;
}
```
该程序首先定义了一个`intersection`函数,用来找出两个有序数组的交集,并将结果存储在`result`数组中。在`main`函数中,我们定义了两个数组`arr1`和`arr2`作为输入集合,并调用`intersection`函数计算它们的交集,最后打印出来。
需要注意的是,这个示例假设输入的两个数组是有序的,且没有重复元素。如果实际的集合数据不是有序的,或者包含重复元素,那么在计算交集之前可能需要先对它们进行排序和去重处理。
阅读全文