计算集合的交集和并集

本文介绍了在数据结构中计算集合交集和并集的基本算法,作者通过实例分享了实现这两个操作的过程,并表示对集合的其他运算抱有兴趣。
摘要由CSDN通过智能技术生成

    在数据结构书上看到了求集合的交集和并集的运算的算法,心里就想着写写,但是之前一直没时间,今天趁着周末就就把它解决了。其实交集非常简单的,就是并集想了下子。唉,没办法,技术有限。

code:

#include<stdio.h>
#define MAXN 1000

void jiaoji(int a[], int b[], int p, int q)
{
    int k = 0;
    int c[MAXN];
    for(int i = 0; i < p; i++)
    {
        for(int j = 0; j < q; j++)
        {
            if(a[i] == b[j])
                c[k++] = a[i];
        }
    }
    for(int m = 0; m < k; m++)
        printf("%d ", c[m]);
    printf("\n");
}

void bingji(int a[], int b[], int p, int q)
{
    int array[MAXN], c[MAXN];
    int k = 0;
    for(int i = 0; i < p; i++)
    {
        for(int j = 0; j < q; j++)
        {
       
好的,以下是用 C 语言编写的集合交集并集的代码: ```c #include <stdio.h> #define MAX_SIZE 100 int main() { int set1[MAX_SIZE], set2[MAX_SIZE], intersection[MAX_SIZE], union_set[MAX_SIZE]; int size1, size2, intersection_size = 0, union_size = 0; // 输入集合1 printf("请输入集合1的元素个数:"); scanf("%d", &size1); printf("请输入集合1的元素:"); for (int i = 0; i < size1; i++) { scanf("%d", &set1[i]); } // 输入集合2 printf("请输入集合2的元素个数:"); scanf("%d", &size2); printf("请输入集合2的元素:"); for (int i = 0; i < size2; i++) { scanf("%d", &set2[i]); } // 计算交集 for (int i = 0; i < size1; i++) { for (int j = 0; j < size2; j++) { if (set1[i] == set2[j]) { intersection[intersection_size++] = set1[i]; break; } } } // 计算并集 for (int i = 0; i < size1; i++) { union_set[union_size++] = set1[i]; } for (int i = 0; i < size2; i++) { int is_duplicate = 0; for (int j = 0; j < size1; j++) { if (set2[i] == set1[j]) { is_duplicate = 1; break; } } if (!is_duplicate) { union_set[union_size++] = set2[i]; } } // 输出结果 printf("集合1:{"); for (int i = 0; i < size1; i++) { printf("%d", set1[i]); if (i != size1 - 1) { printf(", "); } } printf("}\n"); printf("集合2:{"); for (int i = 0; i < size2; i++) { printf("%d", set2[i]); if (i != size2 - 1) { printf(", "); } } printf("}\n"); printf("交集:{"); for (int i = 0; i < intersection_size; i++) { printf("%d", intersection[i]); if (i != intersection_size - 1) { printf(", "); } } printf("}\n"); printf("并集:{"); for (int i = 0; i < union_size; i++) { printf("%d", union_set[i]); if (i != union_size - 1) { printf(", "); } } printf("}\n"); return 0; } ``` 希望这个代码能够帮到你!
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值