用C语言求并集和交集

本文展示了如何使用C语言通过链表结构实现两个数组的交集和并集操作。代码中定义了节点结构体,创建链表,以及计算交集和并集的函数。最后,程序打印出计算结果。
摘要由CSDN通过智能技术生成


#include<stdio.h>
#include<stdlib.h>
struct node
    {
        int data;
        struct node*next;    
    };
typedef struct node NODE;

//主函数

int main()
{
    NODE *head1,*head2,*head3,*head4,*bingji;
    void creatlink1();
    void creatlink2();
    void intersectionsetc();//声明求交集setc 
    void intersectionsetd();//声明求并集setd 
    void print();
    //void print(head4);
    head1 = (NODE*)malloc(sizeof(NODE));
    head2 = (NODE*)malloc(sizeof(NODE));
    head3 = (NODE*)malloc(sizeof(NODE));
    head4 = (NODE*)malloc(sizeof(NODE));
    printf("请输入数组A中各值:\n");
    creatlink1(head1);
    printf("请输入数组B中各值:\n");
    creatlink2(head2);    
    intersectionsetc(head1, head2, head3);
    intersectionsetd(head1, head2, head4);
    printf("他们的交集C是:\n"

C语言中,两个集合的交集可以通过定义两个数组来表示集合,并使用嵌套循环比较这两个数组中的元素来实现。下面是一个简单的示例代码: ```c #include <stdio.h> // 函数声明 void printIntersection(int a[], int b[], int size_a, int size_b); int main() { // 定义两个集合 int set1[] = {1, 2, 3, 4, 5}; int set2[] = {4, 5, 6, 7, 8}; int size1 = sizeof(set1) / sizeof(set1[0]); int size2 = sizeof(set2) / sizeof(set2[0]); // 打印两个集合的交集 printIntersection(set1, set2, size1, size2); return 0; } // 函数定义:打印两个集合的交集 void printIntersection(int a[], int b[], int size_a, int size_b) { int i, j; for (i = 0; i < size_a; i++) { for (j = 0; j < size_b; j++) { if (a[i] == b[j]) { printf("%d ", a[i]); break; // 找到匹配项后,无需继续遍历集合b } } } printf("\n"); } ``` 这段代码首先定义了两个数组 `set1` 和 `set2` 来代表两个集合,并计算了它们的大小。然后调用 `printIntersection` 函数来输出两个集合的交集。在这个函数中,我们使用了两层循环来比较每个集合中的元素,一旦在集合 `b` 中找到与集合 `a` 中某个元素相等的元素,就打印出这个元素,并通过 `break` 语句跳出内层循环。 注意,这种方法在效率上并不是最优的,因为它的时间复杂度是O(n*m),其中n和m分别是两个数组的大小。对于大数据集来说,可能需要考虑更高效的数据结构和算法,比如使用排序加双指针的方法来降低时间复杂度。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值