数据结构课程设计答辩课件_第1页
数据结构课程设计答辩课件_第2页
数据结构课程设计答辩课件_第3页
数据结构课程设计答辩课件_第4页
数据结构课程设计答辩课件_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、数据结构课程设计答辩PPT 集合的交,并和差运算嵌入式1091刘伟选择题目集合的交、并、差的运算1、问题描述:编写一个能演示执行集合的交、并、差的运算程序。2、基本要求:集合元素用小写英文字母,执行各种操作应以对话方式执行。2、算法要点:利用单链表表示集合;理解好三种运算的含义。设计要点:1、有序表的抽象数据类型定义为:readdata(pointer head)初始条件:head是以head为头节点的空链表。操作结果:生成以head为头节点的非空链表。pop(pointer head)初始条件:head是以head为头节点的非空链表。操作结果:将以head为头节点的链表中数据逐个输出。 2、

2、集合的抽象数据类型定义为:and(pointer head1,pointer head2,pointer head3)初始条件:链表head1、head2、head3已存在操作结果:生成一个由head1和head2的并集构成的集合head3。or(pointer head1,pointer head2,pointer head3)初始条件:链表head1、head2、head3已存在操作结果:生成一个由head1和head2的交集构成的集合head3。differ(pointer head1,pointer head2,pointer head3)3、本程序抱含四个模块:1) 节点结构单元模块

3、定义有序表的节点结构;2) 有序表单元模块实现有序表的抽象数据类型;3) 集合单元模块实现集合获得抽象数据类型;4)主程序模块:Void main()初始化;do;;while(“命令”!=“退出”);算法的设计 1、定义结构体类型指针 :typedef struct LNodechar data;struct LNode*next;*pointer;3、定义输出集合:void pop(pointer head) pointer p;p=head-next;while(p!=NULL)printf(%c,p-data);p=p-next;printf(n);4、定义集合的并集函数:void a

4、nd(pointer head1,pointer head2,pointer head3)pointer p1,p2,p3;p1=head1-next;while(p1!=NULL) p3=(pointer)malloc(sizeof(struct LNode);p3-data=p1-data;p3-next=head3-next;head3-next=p3;p1=p1-next;p2=head2-next;while(p2!=NULL)p1=head1-next;while(p1!=NULL)&(p1-data!=p2-data) p1=p1-next;if (p1=NULL)p3=(poi

5、nter)malloc(sizeof(struct LNode);p3-data=p2-data;p3-next=head3-next;head3-next=p3;p2=p2-next;6、定义集合的差集函数 :void differ(pointer head1,pointer head2,pointer head3 )pointer p1,p2,p3;p1=head1-next;while(p1!=NULL)p2=head2-next;while(p2!=NULL)&(p2-data!=p1-data)p2=p2-next;if(p2=NULL)p3=(pointer)malloc(size

6、of(struct LNode);p3-data=p1-data;p3-next=head3-next;head3-next=p3;p1=p1-next;7、主函数的设计:void main()int x; printf(输入数据,按回车键结束)n);pointer head1,head2,head3;head1=(pointer)malloc(sizeof(struct LNode);head1-next=NULL;head2=(pointer)malloc(sizeof(struct LNode);head2-next=NULL;head3=(pointer)malloc(sizeof(s

7、truct LNode);head3-next=NULL;printf(请输入集合1:n);readdata(head1);/调用输入集合函数printf(请输入集合2:n);readdata(head2);/调用输入集合函数A:printf(1.并集 2.交集 3.差集 4.结束 n); doprintf(请选择序号n);scanf(%d,&x);8、利用Switch语句:switch(x)case 1:printf(两集合的并是n);and(head1,head2,head3);/调用并集函数pop(head3);head3-next=NULL;break;case 2:printf(两集

8、合的交是n);or(head1,head2,head3);/调用交集函数pop(head3);head3-next=NULL;break;case 3: printf(两集合的差是n);differ(head1,head2,head3);/调用差集函数pop(head3);head3-next=NULL;break; case 4:break;default:goto A;while(x!=4);实验过程中出现的问题及解决方法:1、由于对集合的三种运算的算法推敲不足,在链表类型及其尾指针的设置时出现错误,导致程序低效。2、刚开始时曾忽略了一些变量参数的标识”&”,使调试程序浪费时间不少。今后应重视确定参数的变量和赋值属性的区分和标识。3、开始时输入集合后,程序只能进行一次运算,后来加入switch语句,成功解决了这一难题。4、该算法并不能排除重复输入相同字符的情况,也不能自动滤去非法字符(如空格、阿拉伯数字等)。5、本实习作业采用数据抽象的程序设计方案,将程序化分为四个层次结构,使得设计时思路清晰,实现时调试顺利,各模块具有较好的可用性,确实得到了一次良好的程序设计训练。课程设计心得 此次课程设计,做了关于集合

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论