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

课程设计软工班.docVIP

课程设计软工班.doc

此“教育”领域文档为创作者个人分享资料,不作为权威性指导和指引,仅供参考
  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
课程设计软工班

《数据结构课程设计》 2014级 软工3班 说明: (1) 根据个人情况,在下面的题目中选择至少6道完成才能记为通过。 (2) 程序要定期完成。原则上在后一章讲完之后,前一章的上机程序不再检查。比如,第三章讲完后,第二章的程序应全部检查完毕,之后不再检查。需要延长的会统一通知。 (3) 所有题目均应在机房检查,随机提问。程序完成质量按正确性、程序风格和界面来评价。 (4) 所有程序的电子版都要上交,请自己保存好。期末时用“学号姓名”格式建立一个文件夹,程序用题号命名,发到565354的QQ邮箱。 (5) 每人至少选择一个带*的题目完成(1.3除外),并完成一个实验报告,与电子版程序一并上交。报告模板附后。 第一章 实验 (任选其一,1.3加分) 1.1设计一个程序,统计一个班(最多有50人)的学生成绩,要求能实现如下四个功能: (1) 由键盘或文件输入每个学生的学号和四门课程的成绩; (2) 计算每个学生的平均成绩和总成绩; (3) 按总成绩从高到低排名,并按名次输出每个学生的情况,包括: 学号,各科成绩,平均成绩,总成绩,排名 (4) 由键盘输入课程号,输出该课程成绩在90分(含90分)以上且总分在前3名的学生情况,要求能多次查询。(请采用结构体数据类型,并采用模块化结构实现) 1.2每个城市信息由城市名(字符串)和位置坐标组成(x,y)。设计实现一程序,完成如下功能: (1)从键盘或文件输入各城市信息 (2)按城市名字非递减排序后输出 (3)输入某个位置信息,查询该位置的城市名称,要求能多次查询。 1.3* 挖坑是一种比较流行的游戏,编写程序模拟挖坑的发牌程序。 游戏介绍:挖坑是三人游戏,一副牌去掉大小王不用,共52张牌,发牌时每人发16张牌,剩余4张为底牌。最后由三人叫分,谁的分多,4张底牌全部归谁。 提示: 回想一下我们现实生活中如何进行挖坑的?首先需要有一副扑克牌,然后经过洗牌(洗的越均匀越好),再顺次发给个人。因此需要一个创建扑克牌模块、洗牌模块和发牌模块。 第二章 实验 2.1 顺序表。(任选其一) (1)编写一个程序,其功能是:从顺序表的第i个位置开始,删除k个元素。 (2)编写一个程序,其功能是:在一个非递减的顺序表中,删除所有值相等的多余元素,要求时间复杂度为O(n),空间复杂度为O(1)。 2.2 链表。(任选其一) (1)约瑟夫环。编号为1,2,…,n的n个人按顺时针方向围坐一圈,每人持有一个密码(正整数)。一开始任选一个整数作为报数上限值m,从第一个人开始顺时针自1开始顺序报数,报到m时停止报数。报m的人出列,将他的密码作为新的m值,从他在顺时针方向上的下一个人开始重新从1报数,如此下去,直至所有的人全部出列为止。试设计一个程序,求出出列顺序。 利用单向循环链表作为存储结构模拟此过程,按照出列顺序打印出各人的编号。 例如m的初值为20;n=7,7个人的密码依次是:3,1,7,2,4,8,4,出列的顺序为6,1,4,7,2,3,5。 (2) 已知有如下单链表(a1,a2,…,an),n为偶数。 … …… 要求写出一个时间复杂度为O(n),辅助空间为O(1)的算法,将上述链表转换成: … … 即(an,an-2,…,a2,a1,a3,…,an-1)。 2.3* 链表应用:大整数加法。设计一个程序实现两个任意长的整数加法运算。不同的计算机系统所能表示的整数范围不同,一个long类型的整数的范围是-231~231-1。但是在一些应用中,我们需要处理的数远远大于这个范围,利用双向链表实现。 提示:根据大整数本身的特征以及计算过程中对于存取时间复杂度的要求,我们选择双向链表作为其存储结构。我们将一个大整数从右到左分组,每三位为一个节点,若剩余一个组不满三位也将其作为一个节点处理。大整数本身的符号用头节点来表示。1表示正数,-1表示负数。通过这样的方式我们就构造了一个存储大整数的双向链表,然后就可以进行大整数的基本运算了。 基本思想:构造三个双向链表,分别存放加数,被加数和运算结果。其运算顺序是从最右边节点开始,以3个数也就是1个节点作为一个单位进行,本次运算结果也要进行分组,后三位作为一个节点存入结果链表中。剩余位作为进位参加左边节点的运算。依此进行。例如(这里用括弧()来表示节点): 123445+9754=(123)(445)+(009)(754), 从右向左第一个节点:445+754=1199=(1)(199)其结果链表最右边的一个节点,而(1)将参加节点从右至左第二个节点的运算,此时又三个数(123)、(9)、(1)进行相加,其结果再作相同处理。 这里需要对参加加法运算的两个数的符号作特别的分类。

文档评论(0)

panguoxiang + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档