2015年软件设计师软考笔记选读.docx

  1. 1、本文档共65页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
PAGE65 / NUMPAGES65 一、数据结构与算法基础 1.1 线性表 1、顺序表 2、链表 单链表: 每个节点2个域,数据域、指针域。 循环链表: 双链表:每个节点3个域,数据域、2个指针域。 单链表:包括,数据域和指针域,最后一个指针域为空。只能向单一方向移动。 循环链表:包括,数据域和指针域,最后一个指针域为头节点。 双链表:包括数据域和前后两指针域,可以向2个方向移动。 4、链表的操作:删除、插入 单链表删除:,a1的指针域指向a3(即要删的节点前驱指向要删节点的后续),a2的节点资源释放。 单链表插入:,s的next指向p的next(要插节点指向后继节点),p的next指向s(要插节点的前驱节点指向该节点)。 双链表删除:, 双链表插入: 5、顺序表与链表的比较 性能类别具体项目顺序存储链式存储空间性能存储密度=1,更优1容量分配事先确定动态改变,更优时间性能查找运算O(n/2)O(n/2)读运算O(1),更优(根据地址偏移量直接定位)O([n-1]/2),最好情况为1,最坏情况为n(依次查找)插入运算O(n/2),最好情况为0,最坏情况为n(需要处理后续元素)O(1),更优删除运算O([n-1]/2) (需要处理后续元素)O(1),更优6、栈,先进后出 既可以链表表示也,也可用顺序结构来实现,顺序即为数组。 7、队列,先进先出 顺序队列、循环队列。队尾不存放元素,所以要注意队尾元素的位置是什么,是实际位置(本身)还是下一个元素。 1.2 树和二叉树 1、树的基本概念 节点的度:与下一层的几个节点相关联,度就为几。比如:节点1的度为3。 树的度:所有节点度数最高的值为树的度。比如:树的度为3。 叶子节点:度为0的节点,即没有子节点的节点。 分支节点:除了叶子节点,其他节点都为分支节点,根节点也是分支节点。 内部节点:除了根节点和叶子节点,其他节点都为分支节点。 父节点、子节点、兄弟节点:相对的节点之间的关系。 层次: 计算:节点总个数=所有节点度的总和+1。(3+3+1+2)+1=10 2、树的遍历 前序遍历:先根,然后递归遍历其所有子节点。1,2,5,6,7,3,4,8,9,10 后序遍历:先子节点及兄弟,然后再父节点,最后根。5,6,7,2,3,9,10,8,4,1 层次遍历:按层次,从左到右访问。1,2,3,4,5,6,7,8,9,10 3、二叉树 完成二叉树:除最低层外其他为满二叉树,而且底层页必须从左至右。 非完全二叉树:不满足上面2个条件。 二叉树的重要特性: A、在二叉树的第i层上最多有2i-1个节点(i=1); B、深度为k的二叉树最多有2k-1个节点(k=1); C、对任何一棵二叉树,如果其叶子节点数为n0,度为2的节点数为n2,则n0=n2+1; D、如果对一棵有n个节点的完全二叉树的节点按层序编号(从第1层到?log2n?+1层,每层从左到右),则对任一节点i(1=i=n),有: 如果i=1,则节点i无父节点,是二叉树的根;如果i1,则父节点是?i/2?; 如果2in,则节点i为叶子节点,无左子节点;否则,其左子节点是节点2i; 如果2i+1n,则节点i无右子节点,否则,其右子节点是节点2i+1。 计算:完全二叉树,度为1的节点,要么有一个,要么没有,否则不是完全二叉树。 (向上取整?3.9?=4,向下取整?3.9?=3) 4、二叉树的遍历 前序遍历:1,2,4,5,7,8,3,6,先根,后左全部,再右全部。 中序遍历:4,2,7,8,5,1,3,6,先左,再自己的中,再右。 后序遍历:4,8,7,5,2,6,3,1,先左,后右,然后再根。 层次遍历:1,2,3,4,5,6,7,8。 5、树与二叉树的转换 所有的孩子节点都为该节点的左子节点,所有的兄弟节点为该节点的右子节点。 二叉树,前序遍历==树,前序遍历。 二叉树,中序遍历==树,后序遍历。 6、查找二叉树(二叉排序树) 查找二叉树,又称二叉排序树(Binary Sort Tree)。一棵查找二叉树,或者为一棵空树,或者满足以下递归条件: 查找树的左、右子树各是一棵查找树。 若查找树的左子树非空,则其左子树上的各节点值均小于根节点的值。 若查找树的右子树非空,则其右子树上的各节点值均大于根节点的值。 7、二叉树的操作 查找:先找根,当前值与查找值比较,小找左子树,大找右子树。 插入节点: 如果有相同键值的节点已在查找二叉树中,则不再插入; 如果查找二叉树为空树,则以新节点为查找二叉树; 将要插入节点的键值与插入后的父节点的键值比较,就能确定新节点是

您可能关注的文档

文档评论(0)

1112111 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档