数据结构总复习资料.docxVIP

  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文档。上传文档
查看更多
PAGE PAGE 23 / 62 2018 数据结构总复习 第一章 概论 数据结构的定义和分类 数据结构的定义 数据结构是一门研究非数值计算的程序设计问题中计算机的操作对象以及它们之间的关系和操作的 学科。 数据结构包括的内容 逻辑结构:数据元素之间的逻辑关系。 存储结构:数据元素及其关系在计算机存储器内的表示。 操作:数据的运算(检索、排序、插入、删除、修改)。 为什么学习数据结构 学习数据结构的作用 计算机内的数值运算依靠方程式,而非数值运算(如表、树、图等)则要依靠数据结构。 同样的数据对象,用不同的数据结构来表示,运算效率可能有明显的差异。 程序设计的实质是对实际问题选择一个好的数据结构,加之设计一个好的算法。而好的算法在很大程度上取决于描述实际问题的数据结构。 电话号码查询问题 要写出好的查找算法,取决于这张表的结构及存储方式。 电话号码表的结构和存储方式决定了查找(算法)的效率。 算法的概念和特点 算法的概念和特点 算法是由若干条指令组成的有穷序列,具有以下特点: 输入:具有 0 个或多个输入的外界量。 输出:至少产生 1 个输出。 有穷性:每一条指令的执行次数必须是有限的。 确定性:每条指令的含义都必须明确,无二义性。 可行性:每条指令的执行时间都是有限的。 算法与程序的区别 一个程序不一定满足有穷性,但算法一定。 程序中的指令必须是机器可执行的,而算法无此限制。 一个算法若用机器可执行的语言来描述,则它就是一个程序。 算法分析 时间复杂度 算法中基本操作重复执行的次数是问题规模 n 的某个函数,用 T(n)表示,若有某个辅助函数 f(n), 使得当n 趋近于无穷大时,T(n) / f(n) 的极限值为不等于零的常数,则称f(n)是 T(n)的同数量级函数。记作 T(n)=O(f(n)),称 O(f(n)) 为算法的渐近时间复杂度,简称时间复杂度。算法效率的度量,采用时间复杂度。 常见函数的时间复杂度按数量递增排列及增长率: 常数阶O(1) 对数阶O(log n) 2 线性阶O(n) 线性对数阶O(n log n) 2 平方阶O(n2) 立方阶O(n3) …… k 次方阶O(nk) 指数阶O(2n) 空间复杂度 空间复杂度是指算法在计算机内执行时所需存储空间的度量,记作:S(n) = O(f(n))。 算法分析的目的 目的在于选择合适算法和改进算法 例题 例 1: for ( i=1; in; i++ ) { y = y+1; // 语 句 1 for ( j=0; j=(2*n); j++ ) x++; //语句 2 } 解:语句 1 频度为(n-1);语句 2 频度为(n-1)*(2n+1)=2n2-n-1,因此时间复杂度 T(n)=2n2-2=O(n2)。 例 2: i=1; //语句 1 while (i=n) i=i*2; //语句 2 解:语句 1 频度为 1;设语句 2 频度为f(n),则有 2f(n)=n,即f(n)=log2n,去极大值,f(n)=log2n, 因此时间复杂度T(n)=1+log2n=O(log2n)。 第二章 线性表 线性表的概念和运算 线性表的概念 线性表是 n (n≥0) 个类型相同的数据元素组成的有限序列。其中数据元素的个数 n 为线性表的长度, 当 n=0 时称为空表。 线性表的特点 对于非空的线性表,有且仅有一个开始结点和一个终端结点;开始结点没有直接前趋,有且仅有一个直接后继;终端结点没有直接后继,有且仅有一个直接前趋;其余任何结点有且仅有一个直接前趋和一个 直接后继。 线性表的计算 置空表 SETNULL(L) :将线性表L 置为空表。 求长度 LENGTH(L) :返回是线性表L 中结点的个数。 取结点 GET(L, i ) :当 1 ≤ i ≤ LENGTH(L)时,返回线性表 L 中的第 i 个结点,否则返回NULL。 定位 LOCATE(L, x) :当线性表L 中存在一个值为x 的结点时,结果是该结点的位置;若表L 中存在多个值为x 的结点,则返回首次找到的结点位置;若表L 中不存在值为x 的结点,则返回一个特殊值表示值为x 的结点不存在。 插入 INSERT(L, x, i) :在线性表L 的第i 个位置插入一个值为x 的新结点。这里 1 ≤ i ≤ n+1, n 是原表L 的长度。 删除 DELETE(L, i) :删除线性表L 的第i 个结点。这里 1 ≤ i ≤ n,n 是原表L 的长度。 线性表的存储结构 顺序存储: 定义:把逻辑上相邻的数据元素存储在物理上相邻的存储单元中的存储结构。简言之,逻辑上相邻,物理上也相邻。 顺序存储方法:用一组地址连续的存储单元依次存储线性表的元素,可通过数组来实现。 地址计算:设首元素a1 的存放地址为L

文档评论(0)

tianya189 + 关注
官方认证
文档贡献者

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

认证主体阳新县融易互联网技术工作室
IP属地上海
统一社会信用代码/组织机构代码
92420222MA4ELHM75D

1亿VIP精品文档

相关文档