集合的操作(交并差)

本文涉及的产品
网络型负载均衡 NLB,每月750个小时 15LCU
传统型负载均衡 CLB,每月750个小时 15LCU
应用型负载均衡 ALB,每月750个小时 15LCU
简介: 集合的操作(交并差)

待改写:存储数据类型int——>char

重复的元素可存储

功能上不完善

#include <stdio.h>
#include <stdlib.h>
typedef struct
{
    int data;
    int flag;
    struct Linklist *next;
} Linklist;
//对LA,LB中相同的元素打上标记
Linklist* Link_get_flag(Linklist *LA,Linklist *LB)
{
    Linklist *p = LA->next,*q = LB->next;
 //此处双重while循环目的是将LA,LB中相同的元素打上标记,便于求他们的交并差集。
    while(p != NULL)
    {
        while(q!=NULL)
        {
            if(p->data == q->data)
            {
                p->flag = 1;
                q->flag = 1;
                q = q->next;
            }
            else
            {
                q = q->next;
            }
        }
        q = LB->next;
        p = p->next;
    }
}
int creatLinklinst(Linklist *L,int i)
{
    Linklist *p;
    L ->next = NULL;
    printf("依次输入元素各个值");
   for(;i>0;--i)
    {
        p  = (Linklist*)malloc(sizeof(Linklist));
        p->flag = 0;
        scanf("%d",&p->data);
        p->next = L->next;
        L->next = p;
    }
     return 1;
}
/*
* 交集
*输入:打标记后的LA/LB
*/
int intersection(Linklist *L)
{
    Linklist *node;
    Linklist *LC;
    LC = (Linklist *)malloc(sizeof(Linklist));
    LC->next = NULL;
    Linklist *p = L->next;
    while(p!=NULL)
{
  //处理LC的数据域(*****)
          for(;p!=NULL;p = p->next)
      {
          if(p->flag == 1)
          {
              node = (Linklist *)malloc(sizeof(Linklist));
              node->data = p->data;
              node->flag = 0;
              node->next = LC->next ;
              LC->next  = node;
          }
          else
          {
              continue;
          }
      }
      printf("交集是:");
      while(LC->next!=NULL)
      {
          LC = LC->next;
          printf("%d ",LC->data);
      }
      printf("\n");
      return 1;
}
}
/*
* 并集
*输入:打标记后的LA&LB
*/
int union_LALB(Linklist *LA,Linklist *LB)
{
    Linklist *p = LA,*q = LB;
    Linklist *LC;
    LC = (Linklist *)malloc(sizeof(Linklist));
    LC->next = NULL;
    Linklist *node;
    while(p->next!=NULL)
    {
        if(p->flag==1)
        {
            p = p->next;
            continue;
        }
        else
        {
            p = p->next;
            node = (Linklist *)malloc(sizeof(Linklist));
            node->flag = 0;
            node->data = p->data;
            node->next = LC->next;
            LC->next = node;
        }
    }
     while(q->next!=NULL)
    {
            q = q->next;
            node = (Linklist *)malloc(sizeof(Linklist));
            node->flag = 0;
            node->data = q->data;
            node->next = LC->next;
            LC->next = node;
    }
      printf("并集是:");
      while(LC->next!=NULL)
      {
          LC = LC->next;
          printf("%d ",LC->data);
      }
      printf("\n");
      return 1;
}
/*
* 差集
*输入:打标记后的LA&LB
*/
int disset(Linklist *LA,Linklist *LB)
{
    Linklist *p = LA,*q = LB;
    Linklist *LC;
    LC = (Linklist *)malloc(sizeof(Linklist));
    LC->next = NULL;
    Linklist *node;
    while(p->next!=NULL)
    {
        if(p->flag==1)
        {
            p = p->next;
            continue;
        }
        else
        {
            p = p->next;
            node = (Linklist *)malloc(sizeof(Linklist));
            node->flag = 0;
            node->data = p->data;
            node->next = LC->next;
            LC->next = node;
        }
    }
    printf("A-B的差集是:");
      while(LC->next!=NULL)
      {
          LC = LC->next;
          printf("%d ",LC->data);
      }
      printf("\n");
      return 1;
}
/*
* 输出打标记后的各个元素
*输入:打标记后的LA&LB
*/
int printfLinklist(Linklist *LA,Linklist *LB)
{
    Linklist *a,*b;
    a = LA;
    b = LB;
    printf("\nLA:");
    while(a->next!=NULL)
    {
        a = a->next;
        printf(" %d(%d)",a->data,a->flag);
    }
    printf("\nLB:");
    while(b->next!=NULL)
    {
        b = b->next;
        printf(" %d(%d)",b->data,b->flag);
    }
    printf("\n\n");
}
int main()
{
    Linklist *LA,*LB;
    int i;
    LA = (Linklist *)malloc(sizeof(Linklist));
    LB = (Linklist *)malloc(sizeof(Linklist));
//创建链表
    printf("输入LA长度:");
    scanf("%d",&i);
    creatLinklinst( LA,i);
    printf("输入LB长度:");
    scanf("%d",&i);
    creatLinklinst( LB,i);
//打标记
    Link_get_flag(LA,LB);
    printfLinklist(LA,LB);
//交集
    intersection(LA);
//并集
    union_LALB(LA,LB);
//差集
    disset(LA,LB);
    return 0;
}

相关实践学习
SLB负载均衡实践
本场景通过使用阿里云负载均衡 SLB 以及对负载均衡 SLB 后端服务器 ECS 的权重进行修改,快速解决服务器响应速度慢的问题
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
相关文章
|
前端开发 JavaScript
vue3使用pdfh5插件
vue3使用pdfh5插件
1106 0
|
9月前
|
存储 安全 算法
【Linux | C++ 】基于环形队列的多生产者多消费者模型(Linux系统下C++ 代码模拟实现)
【Linux | C++ 】基于环形队列的多生产者多消费者模型(Linux系统下C++ 代码模拟实现)
146 0
|
Kubernetes 应用服务中间件 nginx
k8s--Ingress 介绍、ingress-nginx(一)
k8s--Ingress 介绍、ingress-nginx
|
图形学 iOS开发
Unity 之 记录打包IOS首次安装启动弹窗通知权限问题
IOS应该如何去掉首次进程序的获取权限确认框。
830 0
Unity 之 记录打包IOS首次安装启动弹窗通知权限问题
|
iOS开发
iOS中的几种延迟执行方式
iOS中的几种延迟执行方式
532 0
|
程序员 API Android开发
iOS开发:简单的Toast提示框实现
博主是以iOS开发出身,那就最后一篇博文就分享一下关于iOS的内容吧。iOS开发过程中,有些时候操作App的时候,需要给用户对应的响应提示操作,使用系统自带的提示框不是每种情况都适用的。
769 0
iOS开发:简单的Toast提示框实现
Apple Pay接入详细教程
<p style="margin-top:0px; margin-bottom:20px; padding-top:0px; padding-bottom:0px; color:rgb(37,37,37); font-family:'Helvetica Neue',Helvetica,STheiti,微软雅黑,黑体,Arial,Tahoma,sans-serif,serif; font-s
2204 0
|
C# iOS开发 Java
****Objective-C 中的方法的调用
oc语言中采用特定的语言调用类或者实例(对象)的方法称为发送消息或者方法调用。 oc中方法的调用有两种:  第一种: [类名或对象名 方法名];   [ClassOrInstance method]; [ClassOrInstance method:arg1]; ...
1173 0
|
图形学 iOS开发
Unity 之 代码获取IOS设备型号
两种方式获取IOS设备型号,一种可以根据机型进行处理,另外一种则是按照屏幕比例进行分类,一起来了解一下吧~
621 0
Unity 之 代码获取IOS设备型号
|
Java iOS开发 MacOS
iOS开发 Xcode中的Info.plist字段含义
Info.plist用于向iOS提供关于app,bundle或者framework的一些重要信息。它指定了比如一个应用应该怎样启动,它如何被本地化,应用的名称,要显示的图标,还有更多。Info.plist文件实际上是苹果预定义schema的XML文件。
3089 0

热门文章

最新文章