数据结构实验.docx

  1. 1、本文档共15页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验报告实验课程: 实验项目:实验一集合的并交差运算专业:计算机科学与技术班级: 姓名: 学号: 指导教师 一、问题定义及需求分析 实验目的 实验任务需求分析二、概要设计: 抽象数据类型定义主程序流程模块关系三、详细设计数据类型及存储结构(2)模块设计四、调试分析调试分析算法时空分析(3)经验体会五、使用说明(1)程序使用说明六、测试结果(1)运行测试结果截图七、附录(1)源代码一、问题定义及需求分析实验目的设计一个能演示集合的并、交、差运算程序。 实验任务采用顺序表或链表等数据结构。 集合的元素限定为数字和小写英文字母。 需求分析: 输入形式为:外部输入字符串;输入值限定范围为:数字和小写英文字母;输出形式为:字符集;程序功能:计算两个集合的交、并、差以及重新输入集合功能;二、概要设计:(1)抽象数据类型定义: 线性表⑵主程序流程: 调用主菜单函数初始化两个线性表作为集合给两个集合输入数据输出集合数据元素信息另初始化线性表创建选择功能菜单界面通过不同选项调用不同功能函数在每个功能函数里面加结束选择功能,实现循环调用功能菜单一计算完毕退出程序;(3)模块关系: 菜单并运算交运算差运算新建集合结束/返回结束三、详细设计抽象数据类型定义: typedefstruct{ElemType*elem;intlength;intlistsize;}SqList;存储结构:顺序表;模块1-在顺序表的逻辑为i的位置插入新元素e的函数;算法如下: 菜单 并运算 交运算 差运算 新建集合 /**在顺序表的逻辑为i的位置插入新元素e的函数**/StatusListInsert_Sq(SqListL,inti,ElemTypee){ElemType*newbase,*p,*q;if(i1||iL.length+1)return0;//i的合法值为(1=i=L.length_Sq(L)+1)if(L.length=L.listsize){〃当前储存空间已满,增加分配 newbase=(ElemType*)realloc(L.elem,(L.listsize+LISTINCREMENT)*sizeof(ElemType));if(!newbase)exit(-1);//储存分配失败L.elem=newbase;//新基址L.listsize+=LISTINCREMENT;//增加储存容量}q=(L.elem[i-1]);//q为插入位置for(p=(L.elem[L.length-1]);p=q;--p)(p+1)=p;//插入位置及之后的元素往右移q=e;//插入e++L.length;//表长加1return1;}模块二在顺序线性表L中查找第1个与e满足compare()的元素位序,若找到,则返回其在L L.elem=newbase; //新基址 /**在顺序线性表L中查找第1个与e满足compare()的元素位序,若找到,则返回其在L中的位序,否则返回0**/intLocateElem_Sq(SqListL,ElemTypee,Status(*compare)(ElemType,ElemType)){ ElemType*p; inti;i=1;//i的初值为第1个元素的位序p=L.elem;//p的初值为第1个元素的储存位置while(i=L.length!(*compare)(*p++,e))++i;〃从表L中的第一个元素开始与e比较,直到找到L中与e相等的元素时返回该元素的位置if(i=L.length)returni;//若i的大小小于表长,则满足条件返回ielsereturn0;//否则,i值不满足条件,返回0}模块三集合交运算算法如下: /**求集合的交集的函数**/voidMix_Sq(SqListLa,SqListLb,SqListLc){ inti; ElemTypeelem;Lc.length=0;//将表Lc的长度设为0for(i=1;i=La.length;i++)〃依次查看表La的所有元素elem=La.elem[i-1];//将表La中i位置的元素赋值给elemif(LocateElem_Sq(Lb,elem,Equal))//在表Lb中查找是否有与elem相等的元素 ListInsert_Sq(Lc,Lc.length+1,elem);//将表La与Lb中共同的元素放在Lc中}}模块四集合并运算算法如下: /**求集合的并集的函数**/voidUnion_Sq(SqListLa,SqListLb,SqListLc){ inti; ElemTypeelem;Lc.length=0;//将表Lc的长度初设为0for(i=0;iLa.length;i++)//先将表La的元素全部复制到表Lc中Lc.elem[Lc.lengt

文档评论(0)

dajiede + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档