- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
张紫晶20150703Z0147数据结构课程设计实验报告课案
桂林航天工业学院课程设计实验报告系(部): 计算机科学与工程系_____ 课程名称: 数据结构 ____专业班级: 计算机应用技术1班 学 号: 0147 学生姓名: 张紫晶__________指导老师: 邓 维 完成日期: 2016年12月31号 ____ 算法设计的思想和设计分析及流程图三、算法设计的思想和算法分析及流程图1.线性表的顺序存储1.插入:算法思想:查找到元素X需要插入到线性表L的位置i,将该位置i后面的元素后移,将要元素X插入到i位置,表长加1。设计分析:先使用if(L-last==MAXSIZE1-1)提示空间满else if(i1||iL-last+2)提示位置错误函数判断位置i在该线性表L中是否存在,若位置i正确再使用for(j=L-last;j=i-1;j--){L-data[j+1]=L-data[j];}使该位置i后面的数据元素后移,然后将数据元素插入到位置i,表长加1。流程图:2.删除:算法思想:先判断线性表L是否存在数据元素i,然后在线性表L中删除序号为i的数据元素,删除后使序号为 i+1, i+2,..., n 的元素变为序号为 i, i+1,...,n-1,删除后新表长=原表长-1。设计分析:先使用if(i1 || iL-last+1)提示数据元素不存在判断元素i在线性表L中是否存在,若数据元素i存在再使用for(j=i;j=L-last;j++){L-data[j-1]=L-data[j];}L-last--;使数据元素i后面的数据元素前移,将数据元素i覆盖删除,然后表长减1。流程图:3.查找:算法思想:调用函数查找数据元素i,如果其调用函数结果返回在线性表L中首次出现的值为i的那个元素的序号或地址,称为查找成功; 否则,在L中未找到值为x的数据元素,返回某特殊值表示查找失败。设计分析:先使用while(y=L-last L-data[y]!=x)y++;查找数据元素i在线性表L中的位置,如果查找失败则使用if(yL-last)return -1;返回特殊值,否则使用else return y+1;返回该数据元素的地址。流程图:4.Main主函数:算法思想:使用Do…while实现主函数的菜单界面,使用switch…case实现函数的调用。设计分析:使用do…while做出主菜单,使用scanf(%d,k);getchar();switch(k){case 1: case 2: case 3: case 4: case 5:}实现函数的调用。2. 线性表的链式存储1.建表:算法思想:使用头插入法建立单链表,该方法从一个空表开始,重复读入数据,生成新结点,将读入数据存放到新结点的数据域中,然后将新结点插入到当前链表的表头上,直到读入结束标志为止。设计分析:使用p=(LNode2*)malloc(sizeof(LNode2));开辟一个动态空间使用p-data=c;p-next=head;进行赋值和使指针后移,再用head=p;使head与p同指向。流程图:2.按序号查找:算法思想:调用函数查找数据元素i,从链表的头指针出发,顺链域next逐个结点往下搜索,直到搜索到第i个结点为止。设单链表的长度为n,要查找表中第i个结点,仅当1≦i≦n时,i的值是合法的。但有时需要找头结点的位置,故我们将头结点看做是第0 个结点。设计分析:使用while(p-next ji)限定i的合法性使用p=p–next; j++;进行地址和指针后移,再用if (i==j) return p; else return NULL;返回查找结果。流程图:3.插入:算法思想:插入运算是将值为x的新结点插入到表的第i个结点的位置上首先找到ai-1的存储位置p,然后生成一个数据域为x的新结点*q,并令结点*p的指针域指向新结点,新结点的指针域指向结点ai。设计分析:使用p=Get_LinkList(L,i-1);if(p==NULL){printf(位置错误);return 0;}判断i的是否存在,若存在,则使用q=(LNode*)malloc(sizeof(LNode));q-data=x;q-next=p-next;p-next=q;进行插入,再用return 1返回插入结果。流程图:4.删除:算法思想:将表的第i个结点删去,是在单链表中结点ai的存储地址是在其直接前趋结点a a i-1的指针域next中,所以我们必须首先找到a i-1的存储位置p。然后令p–next指向ai的直接后继结点,即把ai从链上摘下。最后释
原创力文档


文档评论(0)