数据结构知识点总结.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第一章 概述 一、概念: 1.学科:数据结构是一门研究非数值计算的程序设计问题中计算机的操作对象以及它们之间的关系和操作等等。 2.概念:由某一数据对象及该对象中所有数据成员之间的关系组成。具体来说,数据结构包含三个方面的内容,即数据的逻辑结构,数据的存储结构和对数据所施加的运算。 3.这三个方面的关系为: 数据的逻辑结构独立于计算机,是数据本身所固有的。 存储结构也称为物理结构,是逻辑结构在计算机存储器中的映像,必须依赖于计算机。 运算是指所施加的一组操作总称。运算的定义直接依赖于逻辑结构,但运算的实现必依赖于存贮结构。 4.数据(data):信息的载体,指能够输入到计算机中,并被计算机识别和处理的符号的集合。例如:数字、字母、汉字、图形、图像、声音都称为数据。 5.数据元素(data element):数据元素是组成数据的基本单位。 数据元素是一个数据整体中相对独立的单位。但它还可以分割成若干个具有不同属性的项(字段),故不是组成数据的最小单位。 6.逻辑结构:从解决问题的需要出发,为实现必要的功能所建立的数据结构,它属于用户的视图,是面向对象的。 7.物理结构:指数据该如何在计算机中存放,是数据逻辑结构的物理存储方式,是属于具体实现的视图,是面向计算机的。 8.逻辑结构与存储结构二者关系:物理结构是逻辑结构的存储映象。 任何一个算法的设计取决于选定的数据(逻辑)结构,而算法的实现依赖于采用的存储结构。 9.从逻辑结构划分数据结构:线性结构和非线性结构(树、图) 10.线性结构: 元素之间为一对一的线性关系 第一个元素无直接前驱 最后一个元素无直接后继 其余元素都有一个直接前驱和直接后继。 11.非线性结构 元素之间为一对多或多对多的非线性关系 每个元素有多个直接前驱或多个直接后继 12.顺序存储:数据元素存储方法:所有元素存放在一片连续的存贮单元中。 数据元素之间关系表示:逻辑上有相邻关系的元素存放到计算机内存仍然相邻,即存储位置体现了数据元素之间的关系。 13.链式存贮 数据元素存储方法:元素可以存放在不连续的存贮单元中。 数据元素之间关系表示:逻辑上相邻的元素存放到计算机内存后不一定是相邻的,因此元素之间的关系通过地址确定。 14.算法:一个有穷的指令集,这些指令为解决某一特定任务规定了一个运算序列。特性: 输入 有0个或多个输入 输出 有一个或多个输出(处理结果) 确定性 每步定义都是确切、无歧义的 有穷性 算法应在执行有穷步后结束 可行性 每一条运算应可通过已经实现的基本运算执行有限次来实现 算法的含义与程序十分相似,但二者是有区别的。一个程序不一定满足有穷性(死循环),另外,程序中的指令必须是机器可执行的,而算法中的指令则无此限制。一个算法若用计算机语言来书写,则它就可以是一个程序。 15.算法的分析与度量: 1)算法的性能标准: 正确性:正确执行的功能和性能要求。 可使用性:算法能够很方便的使用。 可读性:便于理解、测试和修改算法。 效率:计算机资源的消耗,包括存储和运行时间。 健壮性:检错、报错及纠错的功能。 2)算法的事前估计:空间复杂度和时间复杂度 3)算法的后期测试:在算法中的某些部位插装时间函数 time ( ),测定算法完成某一功能所花费的时间。 16.时间复杂度:一个算法执行所耗费的时间,从理论上是不能算出来的,必须上机运行测试才能知道。但我们不可能也没有必要对每个算法都上机测试,只需知道哪个算法花费的时间多,哪个算法花费的时间少就可以了。并且一个算法花费的时间与算法中语句的执行次数成正比例,哪个算法中语句执行次数多,它花费时间就多。一个算法中的语句执行次数称为语句频度或时间频度。记作T(n)=O(f(n)) :表示算法中基本运算次数T(n)是问题规模n的某个函数f(n)。 1)求下列算法段的语句频度 ? for(i=1; i=n; i++) for(j =1; j =i ; j++) x=x+1; 时间频度T(n)=1+2+3+…+n= T(n)与n2 数量级相同,因此它的时间复杂度为O(n2)。 2)例分析下列算法段的时间频度及时间复杂度? for (i=1;i=n;i++)   for (j=1;j=i;j++)      for ( k=1;k=j;k++)        x=i+j-k; 第二章 线性表 1.线性表的定义:线性表(linear list)是n(n≥0)个数据元素a1,a2,…an组成的有限序列。 其中n 称为数据元素的个数或线性表的长度,当n=0时称为空表,n0时称为非空表。 通常将非空的线性表记为(a1,a2,…,an),其中的数据元素ai(1≤i≤n)是一个抽象的符号,其具体含义在不同情况下是不同的,

文档评论(0)

153****9595 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档