求集合并集。
来源:互联网 发布:c语言long范围 编辑:程序博客网 时间:2024/05/14 13:02
- 烟台大学计算机与控制工程学院
- All rights reserved.
- 文件名称:求集合并集
- 作 者:刘小硕
- 完成日期:2015年9月14日
- 问题描述:假设有两个集合A和B分别用两个线性表LA和LB表示,即线性表中的数据元素即为集合中的成员。设计算法,用函数unionList(List LA,List LB,List&LC)函数实现该算法,求一个新的集合C=AUB,即将两个集合的并集放在线性表LC中。
- 输入描述:先初始化线性表LC,将LA的所有元素复制到LC中,然后扫描线性表LB,若LB的当前元素不在线性表LA中,则将其插入到LC中。LA,LB',LC均为List类型变量,而List是线性表抽象数据类型。算法如下:
- 程序输出:
#include<stdio.h>#include<malloc.h>typedef struct{ int data[50]; int length;}sqlist;void creatlist(sqlist *&,int a[],int );void DispList(sqlist *);void unionlist(sqlist *,sqlist *,sqlist *&);int main(){ sqlist *sqa,*sqb,*sqc;int a[6]= {5,8,7,2,4,9};creatlist(sqa,a,6);printf("LA:");DispList(sqa);int b[6]= {2,3,8,6,0};creatlist(sqb,b,6);printf("LB:");DispList(sqb); unionlist(sqa,sqb,sqc);printf("LC:");DispList(sqc);}void creatlist(sqlist *&l,int a[],int n){int i; l=(sqlist *)malloc(sizeof(sqlist)); for(i=0;i<n;i++){l->data[i]=a[i];}l->length=n;}void DispList(sqlist *l){int i;for(i=0;i<l->length;i++){printf("%d ",l->data[i]);}printf("\n");}void unionlist(sqlist *a,sqlist *b,sqlist *&c){c=(sqlist *)malloc(sizeof(sqlist));int i,j=0,k=0,l=0;c->length=0;for(i=0;i<a->length;i++){c->data[i]=a->data[i];c->length++;}while(j<b->length){while(b->data[j]!=a->data[k]&&k<b->length){k++;}if(k==b->length){c->data[i]=b->data[j];i++;c->length++;}k=0;j++;}}
运行结果:
知识点总结:
链表的初始化,数据的插入及数据的显示。
0 0
- 求集合并集。
- 求集合并集
- 求集合并集
- 求集合并集
- 求集合并集
- 求集合 并集
- 字符串集合求并集
- 数据结构:求集合并集
- 字符串集合求并集和交集
- java求集合交集和并集
- 用链表实现两个集合求并集
- 集合存取对象、清除、求并集
- 线性表【项目 - 求集合并集】
- 第三周--求集合并集
- 第三周 求并集合集
- 第三周-求集合并集
- 第三周--【项目 - 求集合并集】
- 第三周项目--求集合并集
- 第2周项目三 体验复杂度
- HDU 5446 Unknown Treasure(CRT+lucas定理)
- 第二周
- linux下网卡配vlan
- Linux脚本程序
- 求集合并集。
- 使用ToolRunner运行Hadoop程序基本原理分析
- 项目0-宣告主权
- VS2010,2012,2013自定义注释[代码段]的另种方法
- RabbitMQ三种Exchange模式(fanout,direct,topic)介绍
- openwrt 端口转发
- hdu 1199 Color the Ball vector使用
- 第2周项目3体验复杂度之二
- 多文件处理