数据结构概述基础.ppt

  1. 1、本文档共89页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
联合可以和结构、数组组合使用。存取结构中的联合或联合中的结构的记号与存取嵌套结构是一样的。 例1-13 结构、数组和联合的组合 struct { char *name; int flags; int utype; union { int ival; float fval; char *pval; } uval; } symtab[NSYM]; 联合是一种形式特殊的结构变量。和结构一样,对联合施加的操作只能是存取成员和取其地址。不能把联合作为参数传递给函数,也不能由函数返回联合。 联合只是一种变量,为了弄请在联合中存储的是哪一种类型,通常是在联合外设置一个变量以作表征。正如在systab中,每一个结构,都含有整型变量utype以指出在该结构的联合uval中存储的是什么类型的变量。 结构中往往含有几个不同类型的变量。如systab中就有四个变量。 1.4 算法性能与复杂度 ?公元825年,一位名叫阿尔? 花拉子米(al-Khowarizmi)的波斯数学家写了一本教科书,书中概括了进行数字四则算术运算的法则,所有的数字都是用今天的印度十进制形式来表示的(按个、十、百位等排列,并有表示小数部位的小数点)。现代名词“算法” (algorithm) 就来源于这位数学家的名字。 在计算机科学里,算法这个词有一个专门的解释:算法─用计算机解题的精确描述。 1.4.1 算法的定义 通常,人们将算法定义为一个用于实现某个特定任务的有穷指令集,这些指令规定了一个运算序列。 一个算法应当具有以下特性: ⑴ 输入性 一个算法必须具有零个或多个输入量。 ⑵ 输出性 一个算法应有一个或多个输出量,输出量是算法计算的结果。 ⑶ 确定性 算法中的每一条指令应含义明确,无歧义。 ⑷ 有穷性 算法中的指令执行序列是有穷的。 ⑸ 有效性 每条指令必须是足够基本的。 一个程序与一个算法对于上述⑷是有重大区别的。一个程序可以不满足特性⑷。一个程序可能会不终止。 本书中所给出的程序均是可终止的,所以在本书中对“算法”和“程序”这两个术语不作严格的区分。 算法设计者在构思和设计了一个算法之后,必须准确清楚地将所设计的解题步骤记录下来,或提供交流,或编写成程序供计算机执行。 记录算法中的解题步骤又叫描述算法。常用的描述算法的方式有自然语言、流程图和程序设计语言等。 自然语言(如汉语或英语): 优点:使用者不必对描述工具本身花精力去学习,对写出来的算法的理解是接的。 缺点:容易出现二义性;语句一般太长, 使得所建立的算法也显得冗长;算法中的分支及循环等结构表示不能清晰地显示出来 规定式样的图形、指向线和文字说明组合起来的流程图方式: 优点:直观、清晰、易懂,便于检查、修改和交流。 缺陷:严密性不如程序设计语言,灵活性不及自然语言;此外,对于大型的算法描述有困难。 计算机程序设计语言: 优点:显得清晰、明了,写出的算法一步到位,能由计算机处理。事实上,用程序设计语言来描述算法,就是对算法的实现。 缺点:抽象性差一些,可能会使写算法的人拘泥于计算步骤描述的细节,而忽略算法的实质。此外,必须熟练掌握程序设计语言及其编程技巧。 考虑到本书的使用者已经熟悉了像C这样的程序设计语言,并且掌握了程序设计的基本方法和技术,并因本书的内容是以面向对象的方法来讨论数据结构,因而采用C++来描述算法。 它的优点是类型丰富、语句精练,具有面向过程和面向对象的双重特点。此外,C++也支持抽象数据类型。为了使写出的算法可读性和可理解性更强, 本书有时还采用了C++语句与自然语言结合的方式来描述算法,有时对算法加以合适的注释。 1.4.2 算法的性能标准 算法的设计主要有以下几个标准: (1) 正确性 算法应确切地满足所要求解的问题的需求。 (2) 可用性 算法应能很方便地使用。 (3) 可读性 算法应是可读的,即易于理解的。 (4) 效率 算法的效率主要是指算法执行时存储单元的开销和运行时间的耗费,前者称为算法的空间代价,后者称为算法的时间代价。 (5) 健壮性 当输入非法数据时,算法应能作出适当的处理,而不应当产生不可预料的结果。 在设计一个算法时,上述的几条标准有时会有矛盾,如可用性强、可读性强会降低算法的效率。而对效率这个标准,算法的低时间代价和低空间代价也会产生矛盾。 例如,有些问题若采用较多的内存空间可使时间代价降低,若采用较

文档评论(0)

宝贝计划 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档