C语言建立集合并实现集合的运算
时间: 2024-03-07 21:49:41 浏览: 198
在C语言中,我们可以使用结构体来实现集合,并通过函数来实现集合的运算。下面是一个简单的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义集合结构体
typedef struct {
int *data; // 存储集合元素的数组
int length; // 集合元素个数
} Set;
// 初始化集合
void initSet(Set *set, int length) {
set->data = (int*)malloc(sizeof(int) * length);
set->length = 0;
}
// 向集合中添加元素
void addElement(Set *set, int element) {
set->data[set->length++] = element;
}
// 集合并
Set unionSet(Set set1, Set set2) {
Set result;
initSet(&result, set1.length + set2.length);
for (int i = 0; i < set1.length; i++) {
addElement(&result, set1.data[i]);
}
for (int i = 0; i < set2.length; i++) {
int isExist = 0;
for (int j = 0; j < set1.length; j++) {
if (set2.data[i] == set1.data[j]) {
isExist = 1;
break;
}
}
if (!isExist) {
addElement(&result, set2.data[i]);
}
}
return result;
}
// 集合交
Set intersectionSet(Set set1, Set set2) {
Set result;
initSet(&result, set1.length);
for (int i = 0; i < set1.length; i++) {
for (int j = 0; j < set2.length; j++) {
if (set1.data[i] == set2.data[j]) {
addElement(&result, set1.data[i]);
break;
}
}
}
return result;
}
// 集合差
Set differenceSet(Set set1, Set set2) {
Set result;
initSet(&result, set1.length);
for (int i = 0; i < set1.length; i++) {
int isExist = 0;
for (int j = 0; j < set2.length; j++) {
if (set1.data[i] == set2.data[j]) {
isExist = 1;
break;
}
}
if (!isExist) {
addElement(&result, set1.data[i]);
}
}
return result;
}
// 打印集合
void printSet(Set set) {
printf("{ ");
for (int i = 0; i < set.length; i++) {
printf("%d ", set.data[i]);
}
printf("}\n");
}
int main() {
Set set1, set2, set3, set4;
initSet(&set1, 5);
initSet(&set2, 5);
addElement(&set1, 1);
addElement(&set1, 2);
addElement(&set1, 3);
addElement(&set1, 4);
addElement(&set1, 5);
addElement(&set2, 3);
addElement(&set2, 4);
addElement(&set2, 5);
addElement(&set2, 6);
addElement(&set2, 7);
printf("set1: ");
printSet(set1);
printf("set2: ");
printSet(set2);
set3 = unionSet(set1, set2);
printf("set1 ∪ set2: ");
printSet(set3);
set4 = intersectionSet(set1, set2);
printf("set1 ∩ set2: ");
printSet(set4);
set4 = differenceSet(set1, set2);
printf("set1 - set2: ");
printSet(set4);
return 0;
}
```
在上面的代码中,我们定义了一个集合结构体,包括集合元素的数组和集合元素个数。然后通过函数来实现集合的初始化、添加元素、集合并、集合交和集合差等操作。最后在主函数中,我们创建了两个集合并进行了集合运算,并输出结果。
阅读全文