西安电子科技大学数据结构C语言版第11章.pptVIP

西安电子科技大学数据结构C语言版第11章.ppt

  1. 1、本文档共39页,可阅读全部内容。
  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文档。上传文档
查看更多
西安电子科技大学数据结构C语言版第11章

* 第11章 数据结构程序设计 第11章 数据结构程序设计 11.1 数据结构程序设计 11.2 实习报告规范 11.1 数据结构程序设计 11.1.1 算法书写规范 1. 算法说明 算法说明,也称为(算法)规格说明,是一个完整算法不可缺少的部分。它应该以注释的形式写在算法头(即函数首部)之下,指明算法的功能、参数表中各参量的含义和输入输出属性、算法中引用了哪些全局变量或外部定义的条件,例如链表是否带头结点、表中元素是否有序以及按递增还是递减方式有序等。必要时,算法说明还可用来陈述算法思想、采用的存储结构等。递归算法的说明特别重要,读者应该力求将它写为算法的严格定义。 算法说明应该在开始设计算法时就写明,不排斥在算法设计过程中作一些补充和修改,但是切忌在最后补写。对于递归算法的情况,这一点尤其重要。另一方面,这样做也是递归算法设计的正确而有效的途径,在算法设计(即解决一个问题)的过程中,能否利用自身的处理能力来解决所划分出的一个或几个子问题,全凭检查自身的规格说明而定。书写(递归)算法的规格说明时,应该忽略它如何实现或假定它能够实现。如何实现的问题正是接下去要做的事。 算法说明书写得不好或不完全时,往往失去了评判一个算法正确与否的标准。书写恰当而又简洁的算法说明是一项技巧性很强的活动,通常要经过不断的练习才能达到。 2. 注释与断言 在难懂的语句和关键的语句(段)之后加以注释可以大大提高程序的可读性。注释要恰当,并非越多越好;此外,注释句的抽象程度应略高于语句(段),例如,应避免用“{i增加1}”来注释语句“i++;”。 断言是注释的一种特殊写法,是一类特别重要的注释。它是一个逻辑谓词,陈述算法执行到这点时应满足的条件。多写断言式的注释,甚至以断言引导算法段的设计,是提高算法的结构良好性、避免错误和增强可读性的有效手段,是特别值得提倡的。其中最重要的是算法的入口断言和ELSE分支断言。注意,正确的算法也只能在输入参数值合法的前提下得出正确的结果。如果算法不含参数合法性检测代码段,书写入口断言是最低限度的要求。 3. 输入和输出 算法的输入和输出可以通过三种途径实现。第一种是通过输入/输出函数实现,其特点是实现算法与计算环境外部的信息交换;第二种是以算法中参数表里显式列出的参量作为输入/输出的媒介;第三种是通过全局变量或外部变量隐式地传递信息。后两种方法的特点是实现了一个算法与其调用者之间的信息交换。 如果一个算法是定义在某一个数据结构之上的几个操作之一,该数据结构可以不列在算法的参数表中。在其他情况下,应尽量避免使用第三种方法。 4. 语句选用的算法结构 赋值运算、IF分支语句和WHILE循环语句是最基本的三种语句(分别描述顺序、选择和重复三种基本程序结构),仅用此三种语句就足以对付一切算法的设计了。实际上,不仅是“足够”,还是“最好”。这样做对于提高结构良好性和可读性、避免逻辑错误是有益和有效的。WHILE语句比其他循环语句更容易验证算法的正确性。SWITCH分支语句是广义的IF分支语句,在分支条件的选用可以避免IF语句的多重嵌套。有助于提高算法的可读性,也是一个鼓励使用的语句。在绝对合适的情况下选用FOR循环语句也是合理的。通常情况下不准使用GOTO语句。 算法设计过程中应尽量避免下列所示的语句结构: do { do {… }while... }while... 此外,语句的开/闭括号应对齐。 5. 基本运算 如果题目中未明确要求用某种结构上的基本运算编写算法,不得直接利用教科书中给出的基本运算。如果非用不可,则要求同时将所用到的所有基本运算写出具体函数过程加以实现。 6. 几点建议 (1) 建议以图说明算法。例如:设两个栈共享向量空间V[1]-V[m],它们的栈底分别设在向量的两端,且进栈的每个元素只占一个分量。试写出这两个栈公用的栈操作算法push(i,x),其中i为0或1,用以指示栈号。 PUSH算法: Void push (int i, int x); {两栈(标号0、1)共享空间V[1] -V[m],栈底在两端。top[0]和top[1]为两栈顶指针。V[1] -V[top[0]]为栈0,V[top[1]] -V[m]为栈1。本算法将x推入栈i。入口时若栈满则不改变栈且输出“overflow”}。 (2) 建议在算法书写完毕后用边界条件的输入参数值验证一下

文档评论(0)

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

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

1亿VIP精品文档

相关文档