网站大量收购闲置独家精品文档,联系QQ:2885784924

算法与数据结构课设1排序重构问题2.数据删除问题3.课程选修问题.doc

算法与数据结构课设1排序重构问题2.数据删除问题3.课程选修问题.doc

  1. 1、本文档共29页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
******************* 实践教学 ******************* 兰州理工大学 计算机与通信学院 2015年秋季学期 算法与数据结构 课程设计 题 目:1.排序重构问题 2.数据删除问题 3.课程选修问题 专业班级: 姓 名: 学 号: 指导教师: 成 绩: 目 录 摘 要 1 一. 排序重构问题 2 1.采用类语言定义相关的数据类型 2 2.算法设计 2 3.函数的调用关系图 2 4.调试分析 3 5.测试结果 3 6.源程序(带注释) 4 二.数据删除问题 6 1.采用类语言定义相关的数据类型 7 2.算法设计 7 3.函数的调用关系图 7 4.调试分析 8 5.测试结果 8 6.源程序(带注释) 8 三.课程选修问题 11 1.采用类语言定义相关的数据类型 11 2.算法设计 11 3.函数的调用关系图 12 4.调试分析 12 5.测试结果 13 6.源程序(带注释) 17 总 结 24 参考文献 26 致 谢 27 摘 要 此次算法与数据结构课程设计主要解决三个问题,主要为排序重构问题、数据删除问题、课程选修问题。 第一道题是排序重构问题。具体要求是由题目给出的一个顺序序列按照题目给定的相关计算方法得到新的序列,然后对计算方法进行逆推得到新的顺序序列,由于计算方法我们得到的序列并不唯一。 第二道题是数据删除问题。主要实现对重复的数据的删除,采用单链表对数据进行操作和运行等,通过该题的设计过程,可以熟练掌握对随机产生数组和单链表的操作和节点的删除以及递归函数。 第三道题是课程选修问题。学生需要修一定数量的课程才能毕业,而这些课程会有一些必须遵循的选修顺序。假设每个学期都开所有课程,并且学生所修课程数量不限制。给出课程和先修课程的列表,主要实现对对输入的字符串进行重新排序,以最短字符在最前的顺序。可以进一步了解课本上排序的的相关知识。 关键字:数据结构;算法分析;删除;排序;重构 一. 排序重构问题 令A为一个由N个已特殊排序数组成的数列:A1,A2,…,AN,其中A1=0。令B为N(N-1)/2个数(定义为Bij=Ai-Aj(ij))组成的数列。例如,A=0,1,5,8,那么D=1,3,4,5,7,8。请完成: 编写程序,根据A构造D; 编写程序,构造与D相对应的某一个数列A,注意A不是唯一的。(4) 1.采用类语言定义相关的数据类型 数据结构:结构体。 typedef struct { int data[MAX]; //一维数组 int flag[MAX]; //表示判断的变量 int size; }array; 2.算法设计 首先用题目给的顺序序列按照题目给的规律生成序列D,然后根据D生成A,经过分析我们发现后来生成的A里面的元素一定是D里面的元素,即A为D的子集,这样得到算法: 从D里面找到和A的个数一样的元素,然后按照题目给的那个算法生成D1,当D1和D完全相等的时候,我们找到的那几个元素就是A的一个组合。 3.函数的调用关系图 如图所示: 图.1-1 4.调试分析 刚开始看这题时,感觉好难而且编程时还没有思路,后来上网查阅了资料还有和同学们讨论了之后,最终解决了。 由于采用了三重循环进行组合计算,所以算法时间复杂度为O(n^3),空间(n) 5.测试结果 如图所示: 图.1-2 输入:4; 0 1 5 8 输出:B=: 数组: 0 1 5 8 0 3 7 8 满足条件 6.源程序(带注释) typedef struct { int data[MAX]; int flag[MAX]; int size; }array; int CREATE_NEW_A() { FILE *fp; array b,a; //b原始数据存储.a,构造的用于判断的结构体 int i,j,z; a.data[0]=0; printf(数组:\n); for(i=0;ib.size;i++) for(j=i+1;jb.size;j++) for(z=j+1;zb.size;z++)

您可能关注的文档

文档评论(0)

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

1亿VIP精品文档

相关文档