欢迎来到天天文库
浏览记录
ID:61508906
大小:283.50 KB
页数:13页
时间:2021-02-08
《集合的并、交和差运算.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、实验报告题目:集合的并、交和差运算班级:班姓名:学号:1.需求分析设计一个程序,要求实现集合的并、交和差运算(1)输入的形式为字符型或者整型,输入的范围:小写字母字符。输出的形式:字符型或者整型。(2)程序所能达到的功能:实现集合的并、交和差运算(3)测试数据:正确:set1=”magazine”,set2=”paper”set1∪set2=”aegimnprz”,set1∩set2=”ae”,set1-set2=”gimnz”。错误:set1=”012oper4a6tion89”,set2=”errordata”set∪set2=”adeinoprt”,set1∩set2=”a
2、eort”,set1-set2=”inp”。2.概要设计为实现上述程序功能,应以有序链表表示集合。为此,需要两个抽象数据类型:有序表和集合(1)有序表的抽象数据类型定义为:ADTOrderedList{数据对象:D={ai丨ai∈CharSet,i=1,2,…,n>=o}数据关系:R1={丨ai-1,ai∈D,ai-13、数据类型定义为:ADTSet{数据对象:D={ai丨ai为小写英文字母且互不相同,i=1,2,…,n,0<=n<=26}数据关系:R1={}基本操作:CreatSet(&T,Str)//生成集合TDestroySet(&T)//销毁集合T的结构。等。各程序模块之间用for循环和while语句来实现调用。1.调试分析:调试过程中遇到的一些问题是通过网络查询,咨询老师等来解决。通过这次实验,懂得了如何生成一个集合,并用有序链表的方式来实现。我觉得,让我们来做这些实验好像真的有点困难。1.本程序的模块划分比较合理,且尽可能的将指针的操作封装在结点和链表的两个模块中,致使集合模块的调试比4、较成功。 2.将数据存入数组再转入链表,可以忽略输入集合的长度,设计更加巧妙,便于用户使用。 3.采用数据抽象的程序设计方法,将程序划分为两个次:元素结点、有序链表,使得设计思路清晰,实现时调试顺利,各模块具有较好的可重复性,确实得到了一次良好的程序设计训练。1.用户使用说明本程序的运行环境为DOS操作系统,可执行文件为:集合的并交差运算.exe 2.测试结果1.附录:#include#includeusingnamespacestd;#ifdefUSE_INT#defineMYTYPEint#else#defineMYTYPEchar#e5、ndifboolIsElementInList(listaSet,MYTYPEiElement)//查看一个元素是否在集合中{list::iteratoriter;for(iter=aSet.begin();iter!=aSet.end();iter++){if(*iter==iElement){returntrue;}}returnfalse;}voidTrim(list&aSet)//去除集合中的重复元素{listnewSet;list::iteratoriter;for(iter=aSet.be6、gin();iter!=aSet.end();iter++){if(!IsElementInList(newSet,*iter)){newSet.push_back(*iter);}}aSet=newSet;}voidfunc1(listset1,listset2)//并{listnewSet=set1;list::iteratoriter;for(iter=set2.begin();iter!=set2.end();iter++){if(IsElementInList(newSet,*iter)){continue7、;}else{newSet.push_back(*iter);}}Trim(newSet);newSet.sort();cout<<"集合的并操作结果是:"<set1,listset2)//交{listne
3、数据类型定义为:ADTSet{数据对象:D={ai丨ai为小写英文字母且互不相同,i=1,2,…,n,0<=n<=26}数据关系:R1={}基本操作:CreatSet(&T,Str)//生成集合TDestroySet(&T)//销毁集合T的结构。等。各程序模块之间用for循环和while语句来实现调用。1.调试分析:调试过程中遇到的一些问题是通过网络查询,咨询老师等来解决。通过这次实验,懂得了如何生成一个集合,并用有序链表的方式来实现。我觉得,让我们来做这些实验好像真的有点困难。1.本程序的模块划分比较合理,且尽可能的将指针的操作封装在结点和链表的两个模块中,致使集合模块的调试比
4、较成功。 2.将数据存入数组再转入链表,可以忽略输入集合的长度,设计更加巧妙,便于用户使用。 3.采用数据抽象的程序设计方法,将程序划分为两个次:元素结点、有序链表,使得设计思路清晰,实现时调试顺利,各模块具有较好的可重复性,确实得到了一次良好的程序设计训练。1.用户使用说明本程序的运行环境为DOS操作系统,可执行文件为:集合的并交差运算.exe 2.测试结果1.附录:#include#includeusingnamespacestd;#ifdefUSE_INT#defineMYTYPEint#else#defineMYTYPEchar#e
5、ndifboolIsElementInList(listaSet,MYTYPEiElement)//查看一个元素是否在集合中{list::iteratoriter;for(iter=aSet.begin();iter!=aSet.end();iter++){if(*iter==iElement){returntrue;}}returnfalse;}voidTrim(list&aSet)//去除集合中的重复元素{listnewSet;list::iteratoriter;for(iter=aSet.be
6、gin();iter!=aSet.end();iter++){if(!IsElementInList(newSet,*iter)){newSet.push_back(*iter);}}aSet=newSet;}voidfunc1(listset1,listset2)//并{listnewSet=set1;list::iteratoriter;for(iter=set2.begin();iter!=set2.end();iter++){if(IsElementInList(newSet,*iter)){continue
7、;}else{newSet.push_back(*iter);}}Trim(newSet);newSet.sort();cout<<"集合的并操作结果是:"<set1,listset2)//交{listne
此文档下载收益归作者所有