ImageVerifierCode 换一换
格式:DOCX , 页数:22 ,大小:125.67KB ,
资源ID:19439563      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/19439563.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(集合的并交差运算分析Word文档下载推荐.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

集合的并交差运算分析Word文档下载推荐.docx

1、五、评分标准1. 根据平时上机考勤、表现和进度,教师将每天点名和检查2. 根据课程设计完成情况,必须有可运行的软件。3. 根据课程设计报告的质量,如有雷同,则所有雷同的所有人均判为不及格。4. 根据答辩的情况,应能够以清晰的思路和准确、简练的语言叙述自己的设计和回答教师的提问六、建议参考资料1数据结构 (C语言版)严蔚敏、吴伟民 主编 清华大学出版社 2004.112数据结构课程设计案例精编(用C/C+描述),李建学 等 编著,清华大学出版社 2007.23.数据结构:用面向对象方法与C+语言描述,殷人昆 主编,清华大学出版社 2007第1章 需求分析1、 本演示程序中,集合的元素限定为小写字

2、母字符“a”z”。集合输入的形式为一个以“0“为结束标志的字符串,串中字符顺序不限。2、 演示程序以用户和计算机的对话方式执行,即在计算机终端上显示“提示信息“之后,由用户在键盘上输入演示程序中规定的运算命令;相应的输入数据和运算结果显示在其后。3、 程序执行的命令包括:1)构造集合A;2)构造在集合B;3)删除集合A内的元素;4)删除集合B内的元素;5) 在集合A中插入元素;6)在集合B中插入元素;7)求AB集合的并集;8)求AB集合的交集;9)求AB及BA的差集第2章 总体设计 总体设计框架图,如图2.1所示:图2.1 总体设计框架第3章 抽象数据类型定义定义格式如下:3.1 LinkLi

3、st抽象数据类型的设计 ADT LinkList 基本操作: InitList(LinkList *L) 构造一个空的线性表L DestroyList(LinkList *L) 初始条件:线性表L已存在 ListEmpty(LinkList L)线性表L已存在。操作结果:若L为空表,则返回TRUE,否则返回FALSE Status ListInsert(LinkList L,int i,ElemType e) 在带头结点的单链线性表L中第i个位置之前插入元素e ListPrint(LinkList L) 依次输出链表中的元素3.2 集合抽象数据类型的设计 typedef struct LNod

4、e char data; struct LNode *next; LNode, *LinkList;第4章 详细设计4.1 工程视图 图4.1 工程视图4.2 类图视图 图4.2 类图视图4.3 主要算法的详细设计4.3.1 插入算法的详细设计 void ListSort(LinkList L)LinkList first; /*为原链表剩下用于直接插入排序的节点头指针*/LinkList t; /*临时指针变量:插入节点*/LinkList p; /*临时指针变量*/LinkList q;first = L-next; /*原链表剩下用于直接插入排序的节点链表*/L-next = NULL;

5、 /*只含有一个节点的链表的有序链表。*/while (first != NULL) /*遍历剩下无序的链表*/*插入排序*/for (t = first, q = L; (q!=NULL) & (q-data data); p=q, q=q-next); /*无序节点在有序链表中找插入的位置*/*退出for循环,就是找到了插入的位置*/first = first- /*无序链表中的节点离开,以便它插入到有序链表中。if (q = L) L = t; /*插在第一个节点之前*/else p-next = t; /*p是q的前驱*/t-next = q; /*完成插入动作*/4.3.2 清除算法

6、的详细设计void qingchu(LinkList La)/*清除链表中相同的元素*/char i,j;LinkList p,q;La-p=La;q=p-while(q)i=p-data; j=q- if(i=j) q=p- /* 删除并释放结点 */ p-next=q- free(q); p=p- q=p-4.3.3 求交集算法的详细设计void Jiaoji(LinkList La,LinkList Lb,LinkList Lc) /*求两集合的交集,将结果存入另一个链表中*/ char i,j; LinkList p ,q; La- Lb- p=La; q=Lb; while(p&q)

7、 i=p- if(i if(i q=q- ListSort(Lc); printf(AB=);ListPrint(Lc);4.3.4 求并集算法的详细设计void bingji(LinkList La,LinkList Lb,LinkList Lc) char i,j;/*求两集合的并集*/Lb-q=Lb;while(p&p=p- ListInsert(Lc,1,j); while(p)i=p-ListInsert(Lc,1,i); while(q)j=q-ListInsert(Lc,1,j);AB= ListPrint(Lc); 4.3.5 求差集算法的详细设计void chaji(Link

8、List La,LinkList Lb,LinkList Lc)char i,j; i=p-if(iwhile(p)i=p-ListSort(Lc);第5章 测试图5.1 输入输出AB集合图5.2 对AB集合进行删除操作图5.3 对AB集合进行插入操作图5.4 对AB集合进行并交差操作第6章 总结在本次数据结构课程设计的过程中,深刻的意识到对程序代码设计的难度,不过这更让我在这过程中受益匪浅,体味到计算机系的高大上。这个课程具有很高的挑战性和耐性。进行程序设计的时候注意模块的划分,从各个小模块开始进行设计。设计的过程中,出现了很多错误,但是通过查找资料,反复对比内容的真伪性,找出了问题的所在,

9、并最终解决了问题,这过程中结果并不显的那么重要,因为有艰辛的过程,所以才显出了结果的完美,它让我更加坚定了在这条路上的努力发展。附录:程序代码 #includectype.hmalloc.h / malloc()等limits.h / INT_MAX等stdio.h / EOF(=Z或F6),NULLstdlib.h / atoi()io.h / eof()math.h / floor(),ceil(),abs()process.h / exit()iostream / cout,cin / 函数结果状态代码 #define TRUE 1 #define FALSE 0 #define OK

10、1 #define ERROR 0 #define INFEASIBLE -1 / #define OVERFLOW -2 因为在math.h中已定义OVERFLOW的值为3,故去掉此行 typedef int Status; / Status是函数的类型,其值是函数结果状态代码,如OK等 typedef int Boolean; / Boolean是布尔类型,其值是TRUE或FALSE typedef int ElemType;/*线性表的单链表存储结构*/typedef struct LNodechar data;struct LNode *next;LNode, *LinkList;Li

11、nkList h;/*带有头结点的单链表的基本操作*/void InitList(LinkList *L) /* 操作结果:构造一个空的线性表L */*L=(LinkList)malloc(sizeof( LNode); /* 产生头结点,并使L指向此头结点 */if(!*L) /* 存储分配失败 */exit(OVERFLOW);(*L)-next=NULL; /* 指针域为空 */void DestroyList(LinkList *L) /* 初始条件:销毁线性表L */while(*L)q=(*L)-free(*L);*L=q;void ClearList(LinkList L) /*

12、 不改变L */将L重置为空表 */p=L- /* p指向第一个结点 */while(p) /* 没到表尾 */free(p);p=q;printf(删除成功n /* 头结点指针域为空 */Status ListEmpty(LinkList L)若L为空表,则返回TRUE,否则返回FALSE */if(L-next) /* 非空 */return FALSE;elsereturn TRUE;Status ListInsert(LinkList L,int i,ElemType e) /* 不改变L */ /* 在带头结点的单链线性表L中第i个位置之前插入元素e */int j=0;LinkLi

13、st p=L,s;j i-1) /* i小于1或者大于表长 */return ERROR;s=(LinkList)malloc(sizeof(struct LNode); /* 生成新结点 */s-data=e; /* 插入L中 */next=p-p-next=s;return OK;Status ListDelete(LinkList L,int i,ElemType *e) /* 不改变L */ /* 在带头结点的单链线性表L中,删除第i个元素,并由e返回其值 */LinkList p=L,q;while(p-next&ji-1) /* 删除位置不合理 */*e=q-free(q);voi

14、d ListPrint(LinkList L) /*依次输出链表中的元素*/LinkList p=L-p)空集nwhile(p)%c, p-data);p = p-nvoid ListSort(LinkList L)void zengtian(LinkList La)/*向集合中添加元素*/char a;请输入要增添的元素,加0结束nscanf(,&a);while(a!=0)if(aaaAZ)ListInsert(La,1,a);getchar();/*消除空格*/ListSort(La);ListPrint(La); void Jiaoji(LinkList La,LinkList Lb,

15、LinkList Lc)int main()char b;char c;LinkList L1,L2,L3,L4,L5,L6;InitList(&L1);L2);L3); /*构建需要的链表*/L4);L5);L6);*n 欢迎使用集合交并差运算程序n请输入A集合的元素,加0结束nListInsert(L1,1,a);getchar();ListSort(L1);qingchu(L1);ListPrint(L1);请输入B集合的元素,加0结束nb);while(b!if(bbListInsert(L2,1,b);ListSort(L2);qingchu(L2);ListPrint(L2);请选择你要的操作n1.删除A集合内元素n2.删除B集合内元素n3.添加元素至A集合n4.添加元素至B集合n5.ABn6.ABn7.A-Bn8.B-An0.结束ndo scanf(c); getchar(); switch(c)case 1:ClearList(L1);break;2ClearList(L2);3zengtian(L1);4zengtian(L2);5Jiaoji(L1,L2,L4);6bingji(L1,L2,L3);7chaji(L1,L2,L5);8chaji(L2,L1,L6);default:欢迎使用nwhile(c!

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

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