网站大量收购闲置独家精品文档,联系QQ:2885784924

数据结构超级终极备考.docx

  1. 1、本文档共11页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构超级终极备考

数据结构超级终极备考六张试卷+重要考点(平时上课喜欢提到的)一、07-08A图的遍历图的遍历是从一个顶点出发,遍历其极大连通分量,然后不连通的再从别的顶点遍历深度优先搜索:依次遍历邻接结点的邻接结点,然后等遍历完再遍历下一个邻接结点(算法见算法一,图见图一)广度优先搜索:逐层遍历,需要用到一个队列,把第一个访问的顶点当作根,逐层访问(算法见算法二,图见图二)散列表的搜索散列表:通过将关键码映射到表中某个位置上来存储元素,访问时根据关键码直接找到地址开散列法优于闭散列法除留余数法优于其他的散列函数各种排序方法包括插入排序、快速排序、选择排序、归并排序、分配排序等(时间复杂度见图三)判断时间复杂度主要是看循环结构冒泡排序:从最下面开始往上冒泡(其改进是增加一个标志exchange,用于判断该趟排序有没有发生交换希尔排序:先划分子序列,每个子序列插入排序,然后不断缩小间隔(合并)快速排序:任取序列中某个元素(一般取第一个元素)将序列划分为两个区间每个区间递归快速排序如何划分区间:以第一个元素为基准,小于它的交换到左边(从第二个位置开始)(大于的不用动),最后一步第一个元素和小于序列的最后一个交换归并排序:归并排序将待排序的元素序列分成两个长度相等的子序列,为每一个子序列排序,然后再将它们合并成一个序列栈的应用:表达式的计算应用后缀表示计算表达式的值:顺序扫描表达式的每一项:如果是操作数,则将其压栈;如果是操作符,则退两个操作数出栈,运算后将计算结果重新压栈利用栈将中缀表达式转换为后缀表达式:各个操作符的优先级是如何确定的:首先*/%要比+-的优先级大,因为这样才能确保它们先运算;然后为了保证从左往右运算,运算符进栈后优先数都升1;最后,左括号栈外优先级最小,栈内优先级最大,为了配对,右括号与其相反(算法见算法三,图见图四)最大堆的定义、插入和删除操作定义:子结点关键码一定小于父结点(算法见算法四、算法五,图见图五)二叉树的前序遍历迭代子算法将遍历的树和函数封装为一个类,其中数据成员包括二叉树的引用、树的结点栈、迭代子等,函数成员包括取遍历序列的下一项Next()函数:首先设计一个判断可以将根结点压栈;然后若栈非空,则出栈作为迭代子,再将其右子女、左子女依次压栈,返回出迭代子指向的元素二叉树的层次序遍历迭代子算法将遍历的树和函数封装为一个类,其中数据成员包括二叉树的引用、树的结点队列、迭代子等,函数成员包括取遍历序列的下一项Next()函数:非空树,则先将迭代子的左右子女依次入队,然后返回迭代子指向的数据两者思想:就是设立一个CurrentNode作为迭代子,其独立于Next()函数,每次Next()函数在返回迭代子数据的同时进行操作使迭代子指向遍历序列的下一个结点二、07—08B对半查找和二叉排序树的查找时间性能有时不同每种数据结构都应该包括三个基本操作:插入、删除和搜索链式队列链式队列的队头指针指向单链表的第一个结点,队尾指针指向单链表的最后一个结点图的生成树图在遍历过程中所有访问过的结点和边构成了一个连通的无环图,即成为一颗树堆排序分为两个步骤:第一步,根据初始输入数据,利用堆的调整算法siftDown()形成初始堆;第二步:通过一系列的交换和重新调整堆进行排序第一步:建立最大堆siftDown()功能到底是什么?将根结点下滑到合适位置。(最大堆的建立是:从最后一个有子女结点的结点开始依次--,对每个结点进行siftDown操作c)第二步:排序(算法见算法六,图就不画了)图的邻接矩阵类定义的各功能函数图的邻接矩阵类定义:数据成员包括顶点表和邻接矩阵(初始化时顶点表申请maxVertices个空间,邻接矩阵maxVertices*maxVertices)给出顶点v的第一个邻接点位置:一个for循环,从0开始,在矩阵v行中寻找第一个1,找到则返回列位置给出顶点v的w下一个邻接点位置:一个for循环,从w+1开始,在矩阵v行中寻找第一个1,找到则返回列位置删除顶点v若v0或v=numVertices或者numVertices==1,则返回false用最后的结点替换v用最后一行、最后一列分别替换…边数减掉,顶点数减掉三、08-09B顺序搜索算法搜索长度为n的线性表时平均搜索长度为(n+1)/2根结点的深度为1,记着!散列常见散列函数:除留余数法、数字分析法、平方取中法、折叠法常见的处理冲突的闭散列方法:线性探查法、二次探查法、双散列法使用开散列法解决冲突时,因为装载因子可以取得很高,所以比闭散列法节省空间邻接表存出边,逆邻接表存入边网络的的最小生成树最小生成树就是总权值最小的生成树,其准则有3只能使用网络中已有的边恰好使用n-1个边不能形成回路Kruskal算法基本过程:先各个顶点各成独立的连通分量,然后依次选择具有最小权值、且两端点不

文档评论(0)

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

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

1亿VIP精品文档

相关文档