- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
电院数据结构与算法大平台试验指导书
数据结构与算法实习指导书
上海交通大学电院数据结构大平台课程组
目录
关于实习步骤的要求和建议
上机实习
实习一 链表
实习二 栈和队列
实习三 树和二叉树
实习四 查找
实习五 图
实习六 排序
注意事项
关于实习步骤的要求和建议
从以往的教学事先实习的经验来看,在初学阶段执行严格的实习步骤规范(包括上机操作规范),机时利用率会大大提高,有助于养成良好的程序编制风格,培养严谨、科学、高效的工作方式。
在以往的教学实践中,经常发现很多学生抱怨说,化了两个小时才找出一个错误,甚至一无所获。他们不明白造成这种情况的原因,正是他们自己。有的学生不屑于按实习步骤规范去做,甚至对于实习步骤的要求和建议看都不看一遍,认为那是浪费时间,这是及其害的。实习步骤规范不但可以培养科学化的工作作风,而且还能有效地避免错误。
具体的步骤机规范如下:
问题分析与系统的结构设计:
充分地分析和理解问题本身,弄清要求作什么,限制条件是什么。按照以数据结构为中心的原则划分模块,即定义数据结构及其在这些结构之上的操作,使得对数据结构的存取通过这些操作加以实现。在这个过程中,要综合考虑系统功能。要考虑系统结构清晰、合理、简单并且易于调试。最后写出每个子程序(过程或函数)的规格说明,列出它们之间的调用关系,可以使用调用关系图表示则更加清晰,这样便完成了系统结构设计。
详细设计和编码
详细设计的目的是对子程序(过程或函数)的进一步求精。用 IF 、WHILE和赋值语句等,以及自然语言写出算法的框架。利用自然语言的目的是避免陷入细节。在编码是,可以对详细设计的结果进一步求精,用高级语言表示出来。
程序的每一行最好不超过 60 个字符。每个子程序(或过程、函数)通常不要太长,以 40 行为宜。子程序(或过程、函数)包含的程序行数太多,易于造成理解的困难。控制 IF 、WHILE 等语句的连续嵌套的深度。程序的目的性必须明确。对每一段程序完成的作用,除非常明显的除外(如:x = x + 1; 注释为 x 加 1,没有什么意义),都应加以注释。这会对程序的调试提供很多方便。另外,根据情况可以设立若干调试点,即输出若干信息,用于验证和你的设想是否一致。另外,对于输入输出语句,必须对它们的作用加以说明。否则,在调试程序时,无法了解系统需要输入说明,系统输出的又是什么。程序的书写,必须按照一定的规范,如保留字小写时涂黑,或者大写等等。
上机准备和静态检查
上机准备:
高级语言文本
熟悉机器的用户手册,熟悉常用的命令。
准备调试的工具,考虑调试方案。如果机器上没有现成的调试工具可供利用,可以自己先设计一些以供使用。
静态检查
自己用一组数据手动执行程序;或同同学一起阅读自己的程序,以全面地了解该程序的逻辑。
上机调试程序
自底向上,先调试底层模块,再调试上层模块。最后,整个程序进行联调。调试正确后将源程序和运行结果加以列印输出。
实习报告的整理
需求及规格说明
问题描述,求解的问题是什么。
设计:
设计思想:存储结构、主要的算法思想。
设计表示:子程序(过程或函数)的规格说明,通过调用关系图表 示它们之间的调用关系。
实现注释:
详细设计表示:主要算法的框架。
用户手册:使用说明。
调试报告:问题是如何解决的,讨论与分析、改进设想、经验与体会、时空复杂度等。
附录
源程序清单和结果:源程序必须有注释,以及必要的测试数据和运行结果数据。提倡用英文描述。
实验报告要求:
在程序开发过程中,逐步形成各种必要的文档及资料。可以写在实验报告纸上,或以电子文档的形式进行书写。
上机实习
以下的实习题目配合课程的进度,请同学们自己务必完成。为了锻炼自己的应用各种不同的数据结构的能力,尽可能的多作一些题目是非常必要的。在完成各种不同题目的过程中,对各种算法的时、空复杂性的分析,将帮助您在更高的角度解决各种应用问题。
3、注意事项:
同学的实习报告可一人一组。每个实习中的题目,不打星号者必须完成。打星号的题目,鼓励同学选作。
提倡同学用英文书写实习报告,但一旦采用英文,将全部采用英文,不许中英各半,不洋不中。
可以先将实习报告以电子文档提交,具体如何提交,届时会通知大家。
以下为各次实习作业:
实习一 链表
1、设有一个双链表, 每个结点中除有 PRIOR,NEXT 及 DATA(可设为
正整数) 三个域之外,还有一个专门记录访问该结点次数的数据域 FREQ
,其值在初始化时为零。每当在链表中进行一次 SEACH〔L,KEY〕
时,则数据域 DATA 之值等于 KEY 的结点,其 FREQ 域之值将加一。
并使该双链表中结点按 FREQ 之值的递减顺序排列,FREQ 值越大的结点
越靠近散双链表的头结点。 请编写符合
文档评论(0)