c语言实现集合的交并差
时间: 2023-12-28 13:05:12 浏览: 109
实现集合的交、并、差操作可以采用数组、链表等数据结构。以下是使用数组实现集合的交、并、差操作的示例代码:
```c
#include <stdio.h>
#define MAXSIZE 100
// 求两个集合的交集
void intersection(int a[], int b[], int c[], int sizeA, int sizeB, int *sizeC)
{
int i, j;
*sizeC = 0;
for (i = 0; i < sizeA; i++) {
for (j = 0; j < sizeB; j++) {
if (a[i] == b[j]) {
c[*sizeC] = a[i];
(*sizeC)++;
break;
}
}
}
}
// 求两个集合的并集
void unionSet(int a[], int b[], int c[], int sizeA, int sizeB, int *sizeC)
{
int i, j;
*sizeC = 0;
for (i = 0; i < sizeA; i++) {
c[*sizeC] = a[i];
(*sizeC)++;
}
for (j = 0; j < sizeB; j++) {
for (i = 0; i < sizeA; i++) {
if (b[j] == a[i]) {
break;
}
}
if (i == sizeA) {
c[*sizeC] = b[j];
(*sizeC)++;
}
}
}
// 求两个集合的差集
void subtract(int a[], int b[], int c[], int sizeA, int sizeB, int *sizeC)
{
int i, j;
*sizeC = 0;
for (i = 0; i < sizeA; i++) {
for (j = 0; j < sizeB; j++) {
if (a[i] == b[j]) {
break;
}
}
if (j == sizeB) {
c[*sizeC] = a[i];
(*sizeC)++;
}
}
}
int main()
{
int a[MAXSIZE] = {1, 2, 3, 4, 5};
int b[MAXSIZE] = {3, 4, 5, 6, 7};
int c[MAXSIZE];
int sizeA = 5, sizeB = 5, sizeC;
// 求交集
intersection(a, b, c, sizeA, sizeB, &sizeC);
printf("交集:");
for (int i = 0; i < sizeC; i++) {
printf("%d ", c[i]);
}
printf("\n");
// 求并集
unionSet(a, b, c, sizeA, sizeB, &sizeC);
printf("并集:");
for (int i = 0; i < sizeC; i++) {
printf("%d ", c[i]);
}
printf("\n");
// 求差集
subtract(a, b, c, sizeA, sizeB, &sizeC);
printf("差集:");
for (int i = 0; i < sizeC; i++) {
printf("%d ", c[i]);
}
printf("\n");
return 0;
}
```
输出结果为:
```
交集:3 4 5
并集:1 2 3 4 5 6 7
差集:1 2
```
阅读全文