关于数据结构的泛谈.docVIP

  1. 1、本文档共11页,可阅读全部内容。
  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文档。上传文档
查看更多
关于数据结构的泛谈.doc

关于数据结构的泛谈 数据结构 狭义: 数据结构是专门研究数据存储问题的 数据的存储包含两个方面:个体的存储 + 个体关系的存储 从某个角度而言,数据存储最核心的问题是对个体关系的存储,个体的存储可以忽略不计 广义: 数据结构既包含数据的存储也包含对数据的操作 对存储的数据的操作就是算法 算法 狭义: 算法和数据的存储方式密切相关 广义: 算法和数据的存储结构无关 (也就是泛型的思想:对于同一种逻辑结构,无论该逻辑结构的物理存储是什么样子的,我们都可以对它执行相同的操作) 数据结构的分类 逻辑结构 线性 数组 链表 栈和队列是特殊的线性结构(操作受限) 非线性 树 图 物理结构 线性一维的连续单元(内存) 数据的存储结构 线性 连续存储(数组) 优点 存取速度很快 缺点 插入、删除操作效率很低 事先必须知道数组的长度 需要大块连续的内存块 离散存储(链表) 优点 空间没有限制(不需要一块连续的内存) 插入、删除操作效率很高 缺点 存取速度很慢 线性结构的应用1 栈 定义 一种可以实现“先进后出”的存储结构 分类 静态栈 动态栈 算法 出栈 压栈 应用 函数调用(函数的嵌套) 中断 表达式求值 内存分配 缓冲处理 迷宫 线性结构的应用2 队列 定义 一种可以实现“先进先出”的存储结构 分类 链式队列——用链表实现 静态队列——用数组实现,静态队列通常都是循环队列 算法 入队 出队 具体应用 所有和时间有关的操作都有队列的影子 【专题】递归 定义 一个函数自己直接或间接调用自己 栈与递归的实现 当在一个函数运行期间,调用另一个函数时,在运行被调函数之前,系统需要完成3件事: 将所有实参、返回地址等信息传给被调函数保存 给被调函数的局部变量(包括形参)分配存储区域 将控制转移到被调函数的入口 从被调函数返回调用函数之前,系统也需要完成3件工作: 保存被调函数的返回结果 释放被调函数所占的存储空间 依照被调函数保存的返回值地址,将控制转移给调用函数 PS:当多个函数迭代调用时,按照“后调用先返回” (后进先出)的规则进行,上述函数之间的传递和控制转移必须借助栈来实现,所以,系统将整个程序运行所需的存储区域安排在一个栈中,每当调用一个函数时,就为它在栈顶分配一个存储区域,每当从一个函数退出时,就释放它的存储区域,则当前运行的函数的数据区域必须在栈顶。 递归需要满足的3个条件 递归必须要有一个明确的终止条件 该函数所处理的数据规模必须在递减 这个转化必须是可解的 循环和递归的关系 所有的循环都可以转化成递归,但用递归可以解决的问题不一定能用循环解决 递归 易于理解 速度慢 所需存储空间大 循环 不易理解 速度快 所需存储空间小 例子 求阶乘 求1+ 2 + 3 + 4 +…… + 100的和 汉诺塔问题 走迷宫 应用 树和森林就是以递归方式定义的 树和图的很多算法都是用递归来实现的 很多数学公式就是以递归的方式定义的(如斐波那契数列) 非线性 树 定义 专业定义(递归定义) 有且只有一个称为根的节点 有若干个互不相交的子树,这些子树本身也是一棵树 通俗定义 树由节点和边组成 每个节点只有一个父节点,但可以有多个子节点 但有一个节点例外,该节点没有父节点,该节点称为根节点 专业术语 深度 从根节点到最底层节点的层数称为深度(根节点是第一层) 度 某一节点的度是该节点下子节点的个数 分类 一般树 任意一个节点的子节点的个数都不受限制 二叉树 任意一个节点的子节点的个数最多两个,且子节点的位置不可更改 分类 一般二叉树 满二叉树 在不增加树的层数的前提下,无法再添加一个节点的二叉树 完全二叉树 如果只删除了满二叉树最底层最右边的连续若干个节点,这样形成的二叉树就是完全二叉树 森林 n个互不相交的树的集合 存储 二叉树的存储 连续存储(完全二叉树,把一般二叉树补成完全二叉树) 优点 查找某个节点的父节点和子节点(判断有没有父、子节点)速度很快 缺点 耗用内存空间过大 链式存储 一般树的存储 双亲表示法(数组) 孩子表示法(边链表) 双亲孩子表示法(数组加边链表) 二

文档评论(0)

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

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

1亿VIP精品文档

相关文档