数据结构与算法课程设计——集合运算

数据结构与算法课程设计——集合运算,第1张

#include<stdioh>

#include<malloch>

#include<stdlibh>

struct set{

int coef;

struct set next;

};

void createlist_p(struct set &p,int n)

{

int i;

struct set L;

p=(struct set )malloc(sizeof(set));

p->next=NULL;

for(i=n;i>0;i--)

{

L=(struct set )malloc(sizeof(set));

printf("请输入该集合中第%d个整数元素:",n-i+1);

scanf("%d",&L->coef);

L->next=p->next;

p->next=L;

}

}//生成新链表用于存放两集合中的元素

void printlist_p(struct set &p)

{

struct set L;

int i;

L=p->next;

if(!L) printf("该表为空!\n");

while(L!=NULL)

{

printf("%d ",L->coef);

L=L->next;

i++;

}

printf("\n");

}//打印输入的两集合中的元素

void Addset(struct set &p,struct set &q,struct set &r)

{

struct set k,m,n;

r=(struct set )malloc(sizeof(set));

r->next=NULL;

k=p->next;

for(;k;)

{

m=(struct set )malloc(sizeof(set));

m->next=r->next;

r->next=m;

m->coef=k->coef;

k=k->next;

}//把第一个集合中的元素放在新集合中

k=q->next;

m=(struct set )malloc(sizeof(set));

m->next=r->next;

r->next=m;

m->coef=k->coef;

k=k->next;

for(;k;)

{

for(n=r->next;(k->coef!=n->coef)&&n->next;){

n=n->next;

}//与新集合中的元素比较

if((k->coef!=n->coef)&&!(n->next)){

m=(struct set )malloc(sizeof(set));

m->next=r->next;

r->next=m;

m->coef=k->coef;

}

k=k->next;

}//对第二个集合中的元素进行分析

}//求A∪B

void Subset(struct set &p,struct set &q,struct set &r){

struct set k,m,n;

r=(struct set )malloc(sizeof(set));

r->next=NULL;

n=q->next;

for(;n;){

m=p->next;

for(;(m->coef!=n->coef)&&m->next;){

m=m->next;

}

if(m->coef==n->coef) {

k=(struct set )malloc(sizeof(set));

k->next=r->next;

r->next=k;

k->coef=m->coef;

}

n=n->next;

}

}//求A∩B

void Intset(struct set &p,struct set &q,struct set &r){

struct set k,m,n;

r=(struct set )malloc(sizeof(set));

r->next=NULL;

m=p->next;

for(;m;){

n=q->next;

for(;(m->coef!=n->coef)&&n->next;){

n=n->next;

}

if(!n->next&&(m->coef!=n->coef)) {

k=(struct set )malloc(sizeof(set));

k->next=r->next;

r->next=k;

k->coef=m->coef;

}

m=m->next;

}

}//求A-B

void bangzhu(){

printf("\n\t\t\t");

printf("\n\t\t\t 求集合的交并差 ");

printf("\n\t\t\t\n");

}

void main()

{

struct set p,q,r;

int m,n,node;

bangzhu();

for(;;)

{

do{

printf("请输入您要选择 *** 作的代码:\n");

printf("1:求两集合的并A∪B\n");

printf("2:求两集合的交A∩B\n");

printf("3:求两集合的差A-B\n");

printf("0:退出该程序\n");

scanf("%d",&node);

} while(node<0||node>3);

if(node==0) exit(1);

printf("\t\t\t/请输入集合A中元素的个数:/\n");

scanf("%d",&m);

createlist_p(p,m);

printf("\t\t\t/请输入集合B中元素的个数:/\n");

scanf("%d",&n);

createlist_p(q,n);

printf("集合A中元素为:");

printlist_p(p);

printf("集合B中元素为:");

printlist_p(q);

while(node<0||node>3);

switch(node)

{

case 1: Addset( p,q,r);printf("A∪B:\n");printlist_p(r);break;

case 2: Subset( p,q,r);printf("A∩B:\n");printlist_p(r);break;

case 3: Intset(p,q,r); printf("A-B:\n");printlist_p(r);break;

}

printf("\n");

}

}

可以了

楼上方法是正确的,学习!把分给楼上

一、程序功能运用两种运算符重载的方法,编写一个程序,实现一个以下整数集合的基本运算:S1 + S2 两个整数集合的并运算S1 - S2 两个整数集合的差运算S1 S2 两个整数集合的交运算S1 <= S2 判定集合s1是S2的子集二、提示分析1.定义一个表示整数集合的类set,声明两个私有数据成员num(int类型,表示集合中元素的个数)和data(int型数组,存放集合元素);2.在set类中声明并定义下列公有函数成员:void insert(int e); // 在集合中添加一个元素eint length(); // 返回集合的大小(元素个数)int getelem(int i); // 返回集合中第i个元素void print(); // 输出集合集合的所有元素3.在set类中定义如下运算符重载的函数成员(方法一),实现集合运算:set operator +(set s); // 重载+运算符,实现并运算set operator -(set s); // 重载-运算符,实现差运算set operator (set s); // 重载运算符,实现交运算int operator <=(set s); // 重载<=运算符,实现判定子集运算4.定义运算符重载的友元函数(方法二),实现集合运算:friend set operator +(set s1,set s2);friend set operator -(set s1,set s2);friend set operator (set s1,set s2);frinend int operator <=(set s1,set s2);5.或通过重载 << 运算符,来实现集合的输出:

“集合运算的问题”,事件是集合还是元素?“事件A和B”、“事件C”、“事件D”

可见这里所有的字母,都是事件,事件不是集合,即使是集合,也没有等价概念,“事件C和事件D等价”不可理解,

重新看了一下题目,题目应该修改为:

对于任意集合A、B、C,集合M=(A∪B)-BC,集合N=(A-B)∪(B-C),那么M=N

集中“-”运算:X-Y=X∩Y补集

A∪B:红黄蓝色块,BC:红色块,A-B:蓝色块,B-C:**快,

M、N:蓝**块,

可以用二个一维数组,

再用两个for循环来判断结果:交,并,差

在for循环中,用一个if来判断一下,是不是a[0]==b[j],只要有相等的,就令之放在c[0]

这就是交集!!

并集就好求吧,

只要令c[i]=a[i],再来一个就是c[i+j+1]=b[j](因为我这里是考虑j=0开始的,然后自加差就是在交上改动一下就可以了,只要是a[0]!=b[j],就把它放到c[]这个数组里面去~!!!!

1:并集的程序。

求集合LA和集合LB的并集

#define NULL 0

struct JD

{ int data;

struct JD next;

};

int find(int number,struct JD h)

{ while(h->data)

{ if(h->data!=number)

{ h=h->next;

continue;

}

else

return 0;

}

return 1;

}

struct JD make()

{ struct JD h=NULL,p=NULL;

int number,tf;

h=(struct JD )malloc(sizeof(struct JD));

scanf("%d",&h->data);

p=h;

while(p->data)

{ p->next=(struct JD )malloc(sizeof(struct JD));

p=p->next;

p->data=0;

scanf("%d",&number);

tf=find(number,h);

if(tf)

p->data=number;

else

continue;

}

return h;

}

void print(struct JD h)

{ while(h->data)

{ printf("%d ",h->data);

h=h->next;

}

}

struct JD change(struct JD la,struct JD lb)

{ struct JD h,p,s,q;

int number,tf;

p=lb;

while(p->data)

{ number=p->data;

tf=find(number,la);

p=p->next;

if(tf)

{ s=(struct JD )malloc(sizeof(struct JD));

s->data=number;

s->next=la;

la=s;

}

else

continue;

}

return la;

}

void del(struct JD h)

{ struct JD p=h->next;

while(h->data)

{ free(h);

h=p;

p=p->next;

}

free(h);

}

main()

{ struct JD la,lb;

printf("\n\nGive the number to LA :\n\n");

la=make();

printf("\nLA is: ");

print(la);

printf("\n\nGive the number to LB :\n\n");

lb=make();

printf("\nLB is: ");

print(lb);

la=change(la,lb);

printf("\n\n\nThe new LA=LA||LB is: ");

print(la);

del(la);

del(lb);

printf("\n\n\nPass any key to exit!\n");

getch();

}

程序运行结果

Give the number to LA :

1↓

2↓

3↓

5↓

0↓

LA is: 1 2 3 5

Give the number to LB :

6↓

7↓

3↓

2↓

9↓

0↓

LB is: 6 7 3 2 9

The new LA=LA||LB is: 9 7 6 1 2 3 5

--------------------------------------------------

Pass any key to exit!

高一数学集合的基本运算的知识点

(1)A={1,3,5},B={1,2,3,4},C={1,2,3,4,5}

(2)A={x|0

思考:上述两组集合中,集合A、B与集合C的关系如何

由所有属于集合A或属于集合B的元素组成的集合,称为集合A与B的并集。

思考:我们用符号“A∪B”表示集合A与B的并集,并读作“A并B”,那么如何用描述法表示集合A∪B

思考:如何用venn图表示A∪B

思考:集合A、B与集合A∪B的关系如何A∪B与B∪A的关系如何

思考:集合A∪A,A∪分别等于什么

思考:若AB,则A∪B等于什么反之成立吗

思考:如A∪B=,则说明什么

并集例题:

例1:设A={4,5,6,8},B={3,5,7,8},求A∪B。

例2:设集合A={x|-1

知识探究(二)

考察下列两组集合:

(1)A={1,3,5},B={1,2,3,4},C={1,3}

(2)A={x|0

思考:上述两组集合中,集合A、B与集合C的关系如何

由属于集合A且属于集合B的所有元素组成的集合,称为集合A与B的交集。

我们用符号“A∩B”表示集合A与B的交集,并读作“A交B”,那么如何用描述法表示集合A∩B

思考:如何用venn图表示A∩B

思考:集合A、B与集合A∩B的关系如何A∩B与B∩A的关系如何

思考:集合A∩A,A∩分别等于什么

思考:若AB,则A∩B等于什么反之成立吗

思考:如A∩B=,则说明什么

交集例题:

例3:A={x|x是新华中学高一年级参加百米赛跑的同学},B={x|x是新华中学高一年级参加跳高比赛的同学}。求A∪B。

例4:设平面内直线l1上点的集合为L1,直线l2上点的集合为L2,试用集合的运算表示l1,l2的位置关系。

知识探究(三)

思考:方程(x-2)(x2-3)=0在有理数范围内的解是什么在实数范围内的解是什么

思考:不等式0

由此看来:在不同范围内研究同一个问题,可能有不同的结果,我们通常把研究问题前给定的范围所对应的集合称为全集,如Q,R,Z等,那么全集的含义如何呢

如果一个集合含有所研究问题中涉及的所有元素,则称这个集合为全集,通常记作U。

知识探究(四)

考察下列各组集合:

(1)U={1,2,3,4,…,10},A={1,3,5,7,9},B={2,4,6,8,10}

(2)U={x|x是市一高一年级2班的同学},A={x|x是市一高一年级2班的男同学},U={x|x是市一高一年级2班的女同学}

(3)U={x|0

思考:在上述各组集合中,把集合U看成全集,我们称集合B为集合A相对于全集U的补集。一般地,集合A相对于全集U的补集是由哪些元素组成的

由全集U中不属于集合A的所有元素组成的。

对于一个集合A,由全集U中不属于集合A的所有元素组成的集合,称为集合A相对于全集U的补集,记作CUA。

思考:如何用描述法表示集合A相对于全集U的补集如何用veuu图表示CUA

思考:集合CU,CUU,A∩CUA,A∪CUA,分别等于什么

思考:若CUA=B,则CUB等于什么若AB,则CUA与CUB的关系如何

补集例题:

例5:设全集U={x∈N|x<9},A={1,2,3,4},B={3,4,5,6,7},求CU(A∩B),(CUA)∪B。

例6:已知全集U=R,集合A={x||x-1|>2},B={x|2

例7:设全集U={x|x是三角形},A={x|x是锐角三角形},B={x|x是钝角三角形}。

求A∩B,CU(A∪B)。

高一数学必修一集合试题

一、基础过关

1设P={x|x<4},Q={x|x2<4},则()

AP⊆QBQ⊆PCP⊆∁RQDQ⊆∁RP

2符合条件{a}P⊆{a,b,c}的集合P的个数是()

A2B3

C4D5

3已知集合A,B均为集合U={1,3,5,7,9}的子集,若A∩B={1,3},(∁UA)∩B={5},则集合B等于()

A{1,3}B{3,5}

C{1,5}D{1,3,5}

4设M={x|x=a2+1,a∈N},P={y|y=b2-4b+5,b∈N},则下列关系正确的是()

AM=P

BMP

CPM

DM与P没有公共元素

5全集U={1,2,3,4,5,6},集合M={2,3,5},N={4,5},则∁U(M∪N)等于()

A{1,3,5}B{2,4,6}

C{1,5}D{1,6}

6已知集合A={x|x≤2},B={x|x>a},如果A∪B=R,那么a的取值范围是________

7已知集合A={x|-1≤x<3},B={x|2x-4≥x-2}

(1)求A∩B;

(2)若集合C={x|2x+a>0},满足B∪C=C,求实数a的取值范围

8设A={x|x2+ax+b=0},B={x|x2+cx+15=0},又A∪B={3,5},A∩B={3},求实数a,b,c的值

二、能力提升

9已知集合A={x|x<3或x≥7},B={x|x

Aa>3Ba≥3Ca≥7Da>7

10集合A={1,2,3,5},当x∈A时,若x-1A,x+1A,则称x为A的一个“孤立元素”,则A中孤立元素的个数为____

11设U=R,M={x|x≥1},N={x|0≤x<5},则(∁UM)∪(∁UN)=________

12某班50名同学参加一次智力竞猜活动,对其中A,B,C三道知识题作答情况如下:答错A者17人,答错B者15人,答错C者11人,答错A,B者5人,答错A,C者3人,答错B,C者4人,A,B,C都答错的有1人,问A,B,C都答对的有多少人

三、探究与拓展

13已知集合A={x|1

(1)试定义一种新的集合运算Δ,使AΔB={x|1

(2)按(1)的运算,求BΔA

高一数学必修一集合试题(2)

一、填空题

1下列语句能确定是一个集合的是________(填序号)

①著名的科学家;

②留长发的女生;

③2010年广州亚运会比赛项目;

④视力差的男生

2集合A只含有元素a,则下列各式正确的是________(填序号)

①0∈A;②a∉A;③a∈A;④a=A

3已知M中有三个元素可以作为某一个三角形的边长,则此三角形一定不是________(填序号)

①直角三角形;②锐角三角形;③钝角三角形;④等腰三角形

4由a2,2-a,4组成一个集合A,A中含有3个元素,则实数a的取值可以是________(填序号)

①1;②-2;③6;④2

5已知集合A是由0,m,m2-3m+2三个元素组成的集合,且2∈A,则实数m的值为________

6由实数x、-x、|x|、x2及-3x3所组成的集合,最多含有________个元素

7由下列对象组成的集体属于集合的是________(填序号)

①不超过π的正整数;

②本班中成绩好的同学;

③高一数学课本中所有的简单题;

④平方后等于自身的数

8集合A中含有三个元素0,1,x,且x2∈A,则实数x的值为________

9用符号“∈”或“∉”填空

-2______R,-3______Q,-1_______N,π______Z

二、解答题

10判断下列说法是否正确并说明理由

(1)参加2010年广州亚运会的所有国家构成一个集合;

(2)未来世界的高科技产品构成一个集合;

(3)1,05,32,12组成的集合含有四个元素;

(4)高一(三)班个子高的同学构成一个集合

11已知集合A是由a-2,2a2+5a,12三个元素组成的,且-3∈A,求a

能力提升

12设P、Q为两个非空实数集合,P中含有0,2,5三个元素,Q中含有1,2,6三个元素,定义集合P+Q中的元素是a+b,其中a∈P,b∈Q,则P+Q中元素的个数是多少

13设A为实数集,且满足条件:若a∈A,则11-a∈A(a≠1)

求证:(1)若2∈A,则A中必还有另外两个元素;

集合的减法运算即设A、B两个集合,以属于A而不属于B的元素为元素的集合称为A与B的差。

集合运算,是数学科学中常用的词语,是一种非常有效的构造形体的方法,可以直观的减少运算难度。集合运算是实体造型系统中非常重要的模块,也是一种非常有效的构造形体的方法。从一维几何元素到三维几何元素,人们针对不同的情况和应用要求,提出了不少集合运算算法。

以上就是关于数据结构与算法课程设计——集合运算全部的内容,包括:数据结构与算法课程设计——集合运算、C++程序设计:整数集合运算的实现、一道数学中集合运算的问题,请说明证明过程和使用到的定律原理。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9575887.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存