普及组——数据结构入门【信息技术】.pptVIP

普及组——数据结构入门【信息技术】.ppt

  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文档。上传文档
查看更多
数据结构入门 刘汝佳 目录 一、基本数据类型 二、逻辑结构:线性、树状和网状 三、序列算法及其扩展 一、基本数据类型 数据类型 数据类型包含两个方面: 值集合(set of values)和定义在这些值上的操作集合(collection of operations). 操作一定要指明类型. 3/2等于1, 而3.0/ 内置数据类型: int, double…操作符、库函数 自定义数据类型 分开: 复合类型+函数(function) 封装: 类(class)中的成员变量和成员函数 内置数据类型 布尔型, 只取true或者false 字符型, 取所有ASCII字符或Unicode字符 整数, 8位, 16位, 32位或64位有/无符号 浮点数: 32位或64位(float double) 类和对象 类: 接口(interface)、实现(implementation)和客户程序(client program) 对象: 用指针指向值和vtable的内存区域, 内存区域在堆里分配 类可以继承, 也可以实现某接口 例: “点”对象 注意事项 整数:long long,表示范围,运算溢出,负数取模 浮点数:精度问题,实数比较,对阶问题(大数吃小数) 二、逻辑结构:线性、树状和网状 逻辑结构 上小节讨论了最基本的数据类型 多个元素可以组成一定的逻辑结构 逻辑结构有:线性、树状和网状 相同的逻辑结构有不同的物理实现方法 逻辑连续不一定物理连续,例如两张盘的VCD影碟 一、线性结构 线性结构的特点是:有唯一的第一元素和最后元素,除了第一元素外每个元素有唯一的前驱;除了最后元素外每个元素有唯一的后继 线性结构有两种物理实现:数组和链表 数组 把相同类型的数据放在连续的内存区域, 称为数组(array), 可以直接定位元素a[i] 对象数组: 指向对象的指针数组 数组的多维扩展:矩阵 矩阵的表示: 数组的数组 行优先表示和列优先表示 多维数组下标和一维数组下标的对应关系 稀疏矩阵的多重表表示(两个域链接到每维的下一个非零元素) 链表 链表也是线性表, 但元素的物理位置不连续, 通过指针相连. 把元素的值和链接关系包装成结点(node). 插入(右), 删除(下) Joseph问题 链表的数组表示法 Joseph问题运行举例(灰色为删除的元素) 带空闲列表的链表 使用数组表示法, 会产生空闲结点, 应组织成空闲列表, 以免浪费空间 链表的其他操作 反转(左) 排序(右) 双向链表 删除(左) 插入(右) 研究链表的意义 作为某些ADT的直接实现 链结构是很多复杂数据结构的基础 循环链表,处理环状数据 链结构实现的树和图 用链实现的复合结构 注意:链式结构不意味着使用指针,也可以用数组模拟空闲空间,用下标模拟指针 链式结构的核心在于相对地、间接定位,而不是绝对地、直接定位 二、树和图 回顾逻辑结构:线性、树状、网状 线性结构:确定的逻辑结构 树状结构:细分为树和二叉树 网状结构:细分为有向图和无向图 物理实现:都可以用连续或者链式结构 线性结构:数组和链表 树状结构:完全树的表示法、儿子-兄弟表示法和父亲表示法 网状结构:邻接矩阵和邻接表 树:递归的层次结构 书的章节(层次性) 表达式树(递归定义) 树的种类和术语 四个层次: 树、有根树、有序树、M元树 二叉树(左上), 三元树(右上), 有根树(左下), 自由树(右下) 二叉树的表示 通常使用链结构, 用指针或者数组 left[u]: 左儿子指针(或下标) right[u]: 右儿子指针(或下标) father[u]: 父亲指针(或下标) father指针是可选的 多叉树转化成二叉树 用左儿子-右兄弟法 二叉树的性质 性质1. 有n个内点的二叉树有n+1个外点 性质2. 有n个内点的二叉树有2n条边, n-1条通往内点, n+1条通往外点 定义: 根的层次(level)为0, 其他点的层次为父亲的层次加1. 树的高度(height)为所有结点的最大层次. 路长度(path length)为所有结点的层次和, 内部路长度(internal path length)为所有内点的层次和, 同理定义外部路长度 二叉树的性质 性质3. 有n个内点的二叉树的外部路长度比内部路长度大2n 性质4. 有n个内点的二叉树的内部路长度至少nlg(n/4), 最多n(n-1)/2 定理: n个内点的二叉树高度至少为lgN, 最大为n-1 图及其表示 G=(V,E),表示二元关系 邻接矩阵表示(左) 邻接表表示(右) 三、序列算法及其扩展 三、序列的基本问题 排序 元素检索 元素统计 子序列统计 扩展结构 矩阵和三维数组 环形 例1. 区间 有n条线段[ai,bi],其中i=1,2,…,n,每一段被涂成黑色 整个数

文档评论(0)

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

1亿VIP精品文档

相关文档