数据结构课程设计___集合的并、交和差运算.docVIP

数据结构课程设计___集合的并、交和差运算.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
一.集合的并、交和差运算 1.【问题描述】: 编制一个能演示执行集合的并、交和差运算的程序。 【要求】: 集合的元素限定为小写字母字符[‘a’..’z’]。 演示程序以用户和计算机的对话方式执行。 【实现提示】:以链表表示集合。 【选作内容】: 集合的元素判定和子集判定运算。 求集合的补集。 集合的混合运算表达式求值。 集合的元素类型推广到其他类型,甚至任意 1.1需求分析1、? 本演示程序中,集合的元素限定为小写字母字符[“a”…”z”]。集合输入的形式为一个以“回车符“为结束标志的字符串,串中字符顺序不限。 2、? 演示程序以用户和计算机的对话方式执行,即在计算机终端上显示“提示信息“之后,由用户在键盘上输入演示程序中规定的运算命令;相应的输入数据和运算结果显示在其后。 3、? 程序执行的命令包括: 1)? 构造集合1;2)构造在集合2;3)求并集;4)求交集;5)求差集;6)返回;7)结束。“构造集合1”和“构造集合2”时,需以字符的形式键入集合元素。 1.1.1程序的功能‘a’..’z’]。 演示程序以用户和计算机的对话方式执行。 能演示执行集合的并、交和差运算的程序 1.1.2.输入输出的要求‘a’..’z’]。 1.2概要设计1.2.1 程序流程图1.2.2 程序组成 1)? 节点结构单元模块——定义有序表的节点结构; 2)? 有序表单元模块——实现有序表的抽象数据类型; 3)? 集合单元模块——实现集合获得抽象数据类型; 主程序模块: Void main(){ 初始化; While() { Case1:..... Case2:…… . . Default:…. } 1.3详细设计CreateSet() 创建集合 DisplaySet() 打印集合 DestroySet() 销毁集合 EmptySet() 集合清空 Bingyunsuan() 两个集合并运算 Jiaoyunsuan() 两个集合交运算 Chayunsuan() 两个集合差运算 1.4调试分析1.4.1调试例子1.4.2调试结果1.4.3存在问题及改进设想””,使调试程序浪费时间不少。今后应重视确定参数的变量和赋值属性的区分和标识。 2、开始时输入集合后,程序只能进行一次运算,后来加入while()语句,成功解决了这一难题。 3、该算法并不能排除重复输入相同字符的情况,也不能自动滤去非法字符(如空格、阿拉伯数字等)。 1.5核心源程序清单 1.5.1结构体定义{ ElemType elem; struct ElemNode *next; }ElemNode, *Set; 1.5.2关键代码 int LengthOf(Set src) { //返回一个集合的长度 int i=0; //实初化 while(src-next!=NULL)//集合不为0 { i++;//自加 src=src-next;//srcr指针移动 } return i;//返回i }//LengthOf void CreateSet(Set dest)/ { //创建一个新的字母集合,限定a-z ElemType ch; Set p=dest,n;//定义二个指针 for(;;) //无条件循环 { ch=getchar();//输入一串字符串,取第一个字符 if(ch==\n) break;//为空时跳出循环 if(ch97||ch122) continue;//a的ASCII为97有26个字母 n=(Set)malloc(sizeof(ElemNode));//创建一个结点 p-next=n;//把n与p联系在一起 n-elem=ch;//赋值 n-next=NULL;//赋值 p=n;//指针往向移 } return ; } void EmptySet(Set dest) { //清空一个集合,保留头结点 Set p,n; while(dest-next!=NULL)//dest集合为空时 { p=dest;//赋值 n=p-next;//n与p-next相连 for(;n-next!=NULL;)//n指向的集合不为空 { p=n;//p指针往后移 n=n-next;//n指针往后移 } free(n);//释放内存 p-next=NULL;//保留头结点 } }//EmptySet void DestroySet(Set dest) {

文档评论(0)

liyxi26 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档