js用Set 实现并集(Union)、交集(Intersect)和差集(Difference)

直接上代码:

let a = new Set([1, 2, 3]);
let b = new Set([4, 3, 2]);

// 并集
let union = new Set([...a, ...b]);
// Set {1, 2, 3, 4}

// 交集
let intersect = new Set([...a].filter(x => b.has(x)));//ES6
var intersect = new Set([...a].filter(function(x){
    return b.has(x);
}))
// set {2, 3}

// 差集
let difference = new Set([...a].filter(x => !b.has(x)));
// Set {1}
以下是由C语言构成的代码,实现了集合的抽象数据类型 Set: ```c #include <stdio.h> #include <stdlib.h> #define MAX_SIZE 100 typedef struct { int data[MAX_SIZE]; int size; } Set; void createSet(Set *s, int a[], int n) { s->size = ; for (int i = ; i < n; i++) { int j; for (j = ; j < s->size; j++) { if (s->data[j] == a[i]) { break; } } if (j == s->size) { s->data[s->size++] = a[i]; } } } void printSet(Set *s) { printf("{ "); for (int i = ; i < s->size; i++) { printf("%d ", s->data[i]); } printf("}\n"); } int isElementOf(Set *s, int x) { for (int i = ; i < s->size; i++) { if (s->data[i] == x) { return 1; } } return ; } void unionSet(Set *s, Set *t, Set *u) { u->size = ; for (int i = ; i < s->size; i++) { u->data[u->size++] = s->data[i]; } for (int i = ; i < t->size; i++) { if (!isElementOf(s, t->data[i])) { u->data[u->size++] = t->data[i]; } } } void differenceSet(Set *s, Set *t, Set *u) { u->size = ; for (int i = ; i < s->size; i++) { if (!isElementOf(t, s->data[i])) { u->data[u->size++] = s->data[i]; } } } void intersectSet(Set *s, Set *t, Set *u) { u->size = ; for (int i = ; i < s->size; i++) { if (isElementOf(t, s->data[i])) { u->data[u->size++] = s->data[i]; } } } int main() { int a[] = {1, 2, 3, 4, 5}; int b[] = {3, 4, 5, 6, 7}; Set s, t, u; createSet(&s, a, 5); createSet(&t, b, 5); printf("Set s: "); printSet(&s); printf("Set t: "); printSet(&t); printf("Is 3 in set s? %d\n", isElementOf(&s, 3)); printf("Is 6 in set s? %d\n", isElementOf(&s, 6)); unionSet(&s, &t, &u); printf("Set s union t: "); printSet(&u); differenceSet(&s, &t, &u); printf("Set s difference t: "); printSet(&u); intersectSet(&s, &t, &u); printf("Set s intersect t: "); printSet(&u); return ; } ``` 在这个代码中,我们使用了一个结构体 Set 来表示集合,其中包含一个整数数组 data 和一个整数 size,分别表示集合中的元素和集合的大小。我们实现了以下基本运算: - createSet:由整数数组 a[..n-1] 创建一个集合。 - printSet:输出一个集合的所有元素。 - isElementOf:判断一个元素是否在一个集合中。 - unionSet:求两个集合的并集。 - differenceSet:求两个集合的差集。 - intersectSet:求两个集合的交集。 我们还在 main 函数中演示了如何使用这些基本运算来操作集合。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值