集合Word文件下载.docx

上传人:b****6 文档编号:20711343 上传时间:2023-01-25 格式:DOCX 页数:14 大小:16.90KB
下载 相关 举报
集合Word文件下载.docx_第1页
第1页 / 共14页
集合Word文件下载.docx_第2页
第2页 / 共14页
集合Word文件下载.docx_第3页
第3页 / 共14页
集合Word文件下载.docx_第4页
第4页 / 共14页
集合Word文件下载.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

集合Word文件下载.docx

《集合Word文件下载.docx》由会员分享,可在线阅读,更多相关《集合Word文件下载.docx(14页珍藏版)》请在冰豆网上搜索。

集合Word文件下载.docx

usingnamespacestd;

#defineElemTypechar

typedefstructElemNode

{

ElemTypeelem;

structElemNode*next;

}ElemNode,*Set;

//-------------FunctionList------------------------------

//---------------函数原型--------------------------------

intLengthOf(Setsrc);

//返回一个集合的长度

voidCreateSet(Setdest);

//创建一个新的字母集合,限定a-z

voidEmptySet(Setdest);

//清空一个集合,保留头结点

voidDestroySet(Setdest);

//销毁集合

voidSortSet(Setdest);

//对一个集合进行从小到大的排序

voidDisplaySet(Setsrc);

//打印集合的所有元素

intExistElem(Setdest,ElemTypee);

//判断元素是否存在于集合中

voidDelElem(Setdest,ElemTypee);

//删除集合中的一个元素一次

voidAddElem(Setdest,ElemTypee);

//在链表尾部追加一个元素

voidContactSet(Setdest,Setsrc);

//连接一个集合到另一个集合

voidAddSet(Setdest,Setsrc1,Setsrc2);

//集合并运算

voidMulSet(Setdest,Setsrc1,Setsrc2);

//集合交运算

voidSubSet(Setdest,Setsrc1,Setsrc2);

//集合差运算

intExistSubset(Setdest,Setsrc);

//子集判断

voidNegSet(Setdest,Setsrc);

//求补集

intmain()

Setdest=(Set)malloc(sizeof(ElemNode));

Setsrc1=(Set)malloc(sizeof(ElemNode));

Setsrc2=(Set)malloc(sizeof(ElemNode));

dest->

next=NULL;

cout<

<

"

输入两个集合:

endl;

CreateSet(src1);

CreateSet(src2);

Set1="

;

DisplaySet(src1);

\t"

Set2="

DisplaySet(src2);

endl<

intitem;

1->

集合并"

"

2->

集合交"

3->

集合差"

非零整数->

错误!

重输"

0->

进入下一步演示"

while(cin>

>

item)

{

if(item)

switch(item)

case1:

集合并运算:

Set1∪Set2="

AddSet(dest,src1,src2);

DisplaySet(dest);

EmptySet(dest);

break;

case2:

集合交运算:

Set1∩Set2="

MulSet(dest,src1,src2);

case3:

集合差运算:

Set1-Set2="

SubSet(dest,src1,src2);

default:

输入错误!

重输!

}

else{cout<

进入下一步演示..."

}//此处在VC++6.0运行与CFree中有点不同(在CFree中要按下回车~~~)

}

getchar();

输入一个集合:

CreateSet(dest);

原集合为:

charch;

在链表尾部添加一个元素ch="

cin>

ch;

AddElem(dest,ch);

删除集合中的存在的某个元素ch="

DelElem(dest,ch);

cout<

再创建一个集合src="

Setsrc=(Set)malloc(sizeof(ElemNode));

CreateSet(src);

将src集合链接到集合dest中..."

ContactSet(dest,src);

此时dest为:

if(ExistSubset(dest,src))

此时src是dest的子集..."

else

此时src不是dest的子集..."

dest="

dest的补集是:

Setp=(Set)malloc(sizeof(ElemNode));

p->

NegSet(p,dest);

DisplaySet(p);

演示结束!

!

DestroySet(dest);

return0;

}

//---------------BasicFunctions-----------------------

//------------------函数实现--------------------------

intLengthOf(Setsrc)

//返回一个集合的长度

inti=0;

while(src->

next!

=NULL)

i++;

src=src->

next;

returni;

}//LengthOf

voidCreateSet(Setdest)

//创建一个新的字母集合,限定a-z

ElemTypech;

Setp=dest,n;

for(;

ch=getchar();

if(ch=='

\n'

)break;

if(ch<

97||ch>

122)continue;

n=(Set)malloc(sizeof(ElemNode));

next=n;

n->

elem=ch;

p=n;

return;

}//CreateSet

voidEmptySet(Setdest)

//清空一个集合,保留头结点

Setp,n;

while(dest->

p=dest;

n=p->

n->

=NULL;

n=n->

free(n);

}//EmptySet

voidDestroySet(Setdest)

//销毁集合

free(dest);

}//DestroySet

voidSortSet(Setdest)

//对一个字母集合进行从小到大的排序

inti,j,l,flag;

Setp,q,n;

l=LengthOf(dest);

if(l<

2)return;

flag=1;

for(i=l-1;

i>

0&

&

flag==1;

i--)

flag=0;

q=p->

n=q->

for(j=0;

j<

i;

j++)

if(q->

elem>

elem)

q->

next=n->

next=q;

p=q;

q=n;

}//SortSet

voidDisplaySet(Setsrc)

//打印集合的所有元素

Setp;

if(src->

next==NULL)

printf("

φ"

);

p=src;

do

p=p->

putchar(p->

elem);

}while(p->

=NULL);

}//DisplaySet

intExistElem(Setdest,ElemTypee)

//判断元素是否存在于集合中

Setp=dest;

if(LengthOf(p)==0)

else{

while(p->

elem!

=e)

if(p->

return1;

}//ExistElem

voidDelElem(Setdest,ElemTypee)

//删除集合中的一个元素一次

Setp=dest,q;

if(LengthOf(p)==1)

free(q);

while(q->

q=q->

next=q->

}//DelElem

voidAddElem(Setdest,ElemTypee)

//在链表尾部追加一个元素

Setp=dest,n;

elem=e;

}//AddElem

voidContactSet(Setdest,Setsrc)

//连接一个集合到另一个集合

next=src->

}//ContactSet

voidAddSet(Setdest,Setsrc1,Setsrc2)

//集合并运算

SortSet(src1);

SortSet(src2);

inti=0,j=0,len1=LengthOf(src1),len2=LengthOf(src2);

src1=src1->

src2=src2->

while(i<

len1&

len2)

if(src1->

elem<

=src2->

if(!

ExistElem(dest,src1->

elem))

AddElem(dest,src1->

j++;

ExistElem(dest,src2->

AddElem(dest,src2->

src2=src2->

len1)

while(j<

}//AddSet

voidMulSet(Setdest,Setsrc1,Setsrc2)

//集合交运算

src2->

elem){i++;

src1=src1->

elseif(src1->

elem){j++;

j++;

}//MulSet

voidSubSet(Setdest,Setsrc1,Setsrc2)

//集合差运算

inti=0,len=LengthOf(src1);

len)

ExistElem(src2,src1->

}//SubSet

intExistSubset(Setdest,Setsrc)

//子集判断

inti=0,len=LengthOf(src);

ExistElem(dest,src->

}//ExistSubset

voidNegSet(Setdest,Setsrc)

//求补集

SortSet(src);

26)

ExistElem(src,i+97))

AddElem(dest,i+97);

}//NegSet

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 工学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1