集合Word文件下载.docx
- 文档编号:20711343
- 上传时间:2023-01-25
- 格式:DOCX
- 页数:14
- 大小:16.90KB
集合Word文件下载.docx
《集合Word文件下载.docx》由会员分享,可在线阅读,更多相关《集合Word文件下载.docx(14页珍藏版)》请在冰豆网上搜索。
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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 集合
![提示](https://static.bdocx.com/images/bang_tan.gif)