用C语言:描述一个集合的抽象数据类型Set,其中所有元素为正整数,集合的基本运算包括: (1)由整数数组a[0..n-1]创建一个集合。 (2)输出一个集合的所有元素。 (3)判断一个元素是否在一个集合中。 (4)求两个集合的并集。 (5)求两个集合的差集。 (6)求两个集合的交集。 在此基础上设计集合的顺序存储结构,并实现各基本运算的算法
时间: 2023-03-26 15:02:25 浏览: 93
以下是C语言描述的集合抽象数据类型Set的代码:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 100
typedef struct {
int data[MAX_SIZE];
int size;
} Set;
// 由整数数组a[..n-1]创建一个集合
Set createSet(int a[], int n) {
Set s;
s.size = ;
for (int i = ; i < n; i++) {
int x = a[i];
int found = ;
for (int j = ; j < s.size; j++) {
if (s.data[j] == x) {
found = 1;
break;
}
}
if (!found) {
s.data[s.size++] = x;
}
}
return s;
}
// 输出一个集合的所有元素
void printSet(Set s) {
printf("{ ");
for (int i = ; i < s.size; i++) {
printf("%d ", s.data[i]);
}
printf("}\n");
}
// 判断一个元素是否在一个集合中
int isInSet(Set s, int x) {
for (int i = ; i < s.size; i++) {
if (s.data[i] == x) {
return 1;
}
}
return ;
}
// 求两个集合的并集
Set unionSet(Set s1, Set s2) {
int a[MAX_SIZE];
int n = ;
for (int i = ; i < s1.size; i++) {
a[n++] = s1.data[i];
}
for (int i = ; i < s2.size; i++) {
if (!isInSet(s1, s2.data[i])) {
a[n++] = s2.data[i];
}
}
return createSet(a, n);
}
// 求两个集合的差集
Set differenceSet(Set s1, Set s2) {
int a[MAX_SIZE];
int n = ;
for (int i = ; i < s1.size; i++) {
if (!isInSet(s2, s1.data[i])) {
a[n++] = s1.data[i];
}
}
return createSet(a, n);
}
// 求两个集合的交集
Set intersectionSet(Set s1, Set s2) {
int a[MAX_SIZE];
int n = ;
for (int i = ; i < s1.size; i++) {
if (isInSet(s2, s1.data[i])) {
a[n++] = s1.data[i];
}
}
return createSet(a, n);
}
int main() {
int a[] = {1, 2, 3, 4, 5};
int b[] = {3, 4, 5, 6, 7};
Set s1 = createSet(a, 5);
Set s2 = createSet(b, 5);
printSet(s1);
printSet(s2);
printf("isInSet(s1, 3) = %d\n", isInSet(s1, 3));
printf("isInSet(s2, 3) = %d\n", isInSet(s2, 3));
Set s3 = unionSet(s1, s2);
printSet(s3);
Set s4 = differenceSet(s1, s2);
printSet(s4);
Set s5 = intersectionSet(s1, s2);
printSet(s5);
return ;
}
```
其中,createSet函数用于创建一个集合,isInSet函数用于判断一个元素是否在一个集合中,unionSet函数用于求两个集合的并集,differenceSet函数用于求两个集合的差集,intersectionSet函数用于求两个集合的交集。printSet函数用于输出一个集合的所有元素。
集合的顺序存储结构可以使用数组来实现,其中size表示集合的大小,data数组存储集合的元素。
阅读全文