数据结构复习重点归纳笔记清华严蔚敏版.docx
- 文档编号:28998132
- 上传时间:2023-07-20
- 格式:DOCX
- 页数:11
- 大小:24.33KB
数据结构复习重点归纳笔记清华严蔚敏版.docx
《数据结构复习重点归纳笔记清华严蔚敏版.docx》由会员分享,可在线阅读,更多相关《数据结构复习重点归纳笔记清华严蔚敏版.docx(11页珍藏版)》请在冰豆网上搜索。
数据结构复习重点归纳笔记清华严蔚敏版
一、数据构造章节构造及重点构成
数据构造学科章节划分基本上为:
概论,线性表,栈和队列,串,多维数组和广义表,树和二叉树,图,查找,内排,外排,文献,动态存储分派。
对于绝大多数学校而言,“外排,文献,动态存储分派”三章基本上是不考,在大多数高校计算机本科教学过程中,这三章也是基本上不作讲授。
因此,人们在这三章上可以不必耗费过多精力,只要懂得基本概念即可。
但是,对于报考名校特别是该校又有在试卷中对这三章进行过考核历史,那么这某些朋友就要留意这三章了。
按照以上咱们给出章节以及对后三章简介,数据构造章节比重大体为:
概论:
内容很少,概念简朴,分数大多只有几分,有学校甚至不考。
线性表:
基本章节,必考内容之一。
考题多数为基本概念题,名校考题中,鲜有大型算法设计题。
如果有,也是与其他章节内容相结合。
栈和队列:
基本章节,容易出基本概念题,必考内容之一。
而栈常与其他章节配合考查,也常与递归等概念相联系进行考查。
串:
基本章节,概念较为简朴。
专门针对于此章大型算法设计题很少,较常用是依照KMP进行算法分析。
多维数组及广义表:
基本章节,基于数组算法题也是常用,分数比例波动较大,是出题“可选单元”或“侯补单元”。
普通如果要出题,多数不会作为大题出。
数组常与“查找,排序”等章节结合来作为大题考查。
树和二叉树:
重点难点章节,各校必考章节。
各校在此章出题不同之处在于,与否在本章中出一到两道大算法设计题。
通过对多所学校试卷分析,绝大多数学校在本章都曾有过出大型算法设计题历史。
图:
重点难点章节,名校尤爱考。
如果作为重点来考,则多余现于分析与设计题型当中,可与树一章共同构成算法设计大题题型设计。
查找:
重点难点章节,概念较多,联系较为紧密,容易混淆。
出题时可以作为分析型题目给出,在基本概念型题目中也较为常用。
算法设计型题中可以数组结合来考查,也可以与树一章结合来考查。
排序:
与查找一章类似,本章同属于重点难点章节,且概念更多,联系更为紧密,概念之间更容易混淆。
在基本概念考查中,尤爱考各种排序算法优劣比较此类题。
算法设计大题中,如果作为出题,那么常与数组结合来考查。
二、数据构造各章节重点勾划:
第0章 概述
本章重要起到总领作用,为读者进行数据构造学习进行了某些先期铺垫。
人们重要注意如下几点:
数据构造基本概念,时间和空间复杂度概念及度量办法,算法设计时注意事项。
本章考点不多,只要稍加注意理解即可。
第一章 线性表
作为线性构造开篇章节,线性表一章在线性构造学习乃至整个数据构造学科学习中,其作用都是不可低估。
在这一章,第一次系统性地引入链式存储概念,链式存储概念将是整个数据构造学科重中之重,无论哪一章都涉及到了这个概念。
总体来说,线性表一章可供考查重要考点有如下几种方面:
1.线性表有关基本概念,如:
前驱、后继、表长、空表、首元结点,头结点,头指针等概念。
2.线性表构造特点,重要是指:
除第一及最后一种元素外,每个结点都只有一种前趋和只有一种后继。
3.线性表顺序存储方式及其在详细语言环境下两种不同实现:
表空间静态分派和动态分派。
静态链表与顺序表相似及不同之处。
4.线性表链式存储方式及如下几种惯用链表特点和运算:
单链表、循环链表,双向链表,双向循环链表。
其中,单链表归并算法、循环链表归并算法、双向链表及双向循环链表插入和删除算法等都是较为常用考查方式。
此外,近年来在不少学校中还多次浮现规定用递归算法实现单链表输出(也许是顺序也也许是倒序)问题。
在链表小题型中,经常考到某些诸如:
判表空题。
在不同链表中,其判表空方式是不同样,请人们注意。
5.线性表顺序存储及链式存储状况下,其不同优缺陷比较,即其各自合用场合。
单链表中设立头指针、循环链表中设立尾指针而不设立头指针以及索引存储构造各自好处。
第二章 栈与队列
栈与队列,是诸多学习DS同窗遇到第一只拦路虎,诸多人从这一章开始坐晕车,始终晕到当前。
因此,理解栈与队列,是走向DS高手一条必由之路,。
学习此章前,你可以问一下自己是不是已经懂得了如下几点:
1.栈、队列定义及其有关数据构造概念,涉及:
顺序栈,链栈,共享栈,循环队列,链队等。
栈与队列存取数据(请注意涉及:
存和取两某些)特点。
2.递归算法。
栈与递归关系,以及借助栈将递归转向于非递归典型算法:
n!
阶乘问题,fib数列问题,hanoi问题,背包问题,二叉树递归和非递归遍历问题,图深度遍历与栈关系等。
其中,涉及到树与图问题,多半会在树与图有关章节中进行考查。
3.栈应用:
数值表达式求解,括号配对等原理,只作原理性理解,详细规定考查此为题目算法设计题不多。
4.循环队列中判队空、队满条件,循环队列中入队与出队算法。
如果你已经对上面几点了如指掌,栈与队列一章可以不看书了。
注意,我说是可以不看书,并不是可以不作题哦。
第三章 串
经历了栈一章痛苦煎熬后,终于迎来了串一章柳暗花明。
串,在概念上是比较少一种章节,也是最容易自学章节之一,但正如每个过来人所理解,KMP算法是这一章重要关隘,突破此关隘后,走过去又是一马平川大好DS山河了,呵呵。
串一章需要攻破重要堡垒有:
1.串基本概念,串与线性表关系(串是其元素均为字符型数据特殊线性表),空串与空格串区别,串相等条件
2.串基本操作,以及这些基本函数使用,涉及:
取子串,串连接,串替代,求串长等等。
运用串基本操作去完毕特定算法是诸多学校在基本操作上考查重点。
3.顺序串与链串及块链串区别和联系,实现方式。
4.KMP算法思想。
KMP中next数组以及nextval数组求法。
明确老式模式匹配算法局限性,明确next数组需要改进之外。
其中,理解算法是核心,会求数组是得分点。
不用我多说,这一节内容是本章重中之重。
也许进行考查方式是:
求next和nextval数组值,依照求得next或nextval数组值给出运用KMP算法进行匹配匹配过程。
第四章 数组与广义表
学过程序语言朋友,数组概念咱们已经不是第一次见到了,应当已经“一回生,二回熟”了,因此,在概念上,不会存在太大障碍。
但作为考研课程来说,本章考查重点也许与大学里程序语言所关注不太同样,下面会作简介。
广义表概念,是数据构造里第一次浮现。
它是线性表或表元素有限序列,构成该构造每个子表或元素也是线性构造,因此,这一章也归入线性构造中。
本章考查重点有:
1.多维数组中某数组元素position求解。
普通是给出数组元素首元素地址和每个元素占用地址空间并组给出多维数组维数,然后规定你求出该数组中某个元素所在位置。
2.明确按行存储和按列存储区别和联系,并可以按照这两种不同存储方式求解1中类型题。
3.将特殊矩阵中元素按相应换算方式存入数组中。
这些矩阵涉及:
对称矩阵,三角矩阵,具备某种特点稀疏矩阵等。
熟悉稀疏矩阵三种不同存储方式:
三元组,带辅助行向量二元组,十字链表存储。
掌握将稀疏矩阵三元组或二元组向十字链表进行转换算法。
4.广义表概念,特别应当明确表头与表尾定义。
这一点,是理解整个广义表一节算法基本。
近来,在某些学校中,浮现了这样一种题目类型:
给出对某个广义表L若干个求了若干次取头和取尾操作后串值,规定求出原广义表L。
人们要留意。
5.与广义表关于递归算法。
由于广义表定义就是递归,因此,与广义表关于算法也常是递归形式。
例如:
求表深度,复制广义表等。
这种题目,可以依照不同角度广义表体现形式运用两种不同方式解答:
一是把一种广义表看作是表头和表尾两某些,分别对表头和表尾进行操作;二是把一种广义表看作是若干个子表,分别对每个子表进行操作。
第五章 树与二叉树
从对线性构造研究过度到对树形构造研究,是数据构造课程学习一次跃变,本次跃变完毕好坏,将直接关系到你到实际考试中与否可以拿到高分,而这所有一切,将最后影响你专业课总分。
因此,树这一章重要性,已经不说自明了。
总体来说,树一章知识点涉及:
二叉树概念、性质和存储构造,二叉树遍历三种算法(递归与非递归),在三种基本遍历算法基本上实现二叉树其他算法,线索二叉树概念和线索化算法以及线索化后查找算法,最优二叉树概念、构成和应用,树概念和存储形式,树与森林遍历算法及其与二叉树遍历算法联系,树与森林和二叉树转换。
下面咱们来看考试中对以上知识重要考查办法:
1.二叉树概念、性质和存储构造
考查办法可有:
直接考查二叉树定义,让你阐明二叉树与普通双分支树区别;考查满二叉树和完全二叉树性质,普通二叉树五个性质:
第i层最多结点数,深度为k二叉树最多结点数,n0=n2+1性质,n个结点完全二叉树深度,顺序存储二叉树时孩子结点与父结点之间换算关系(左为:
2*i,右为:
2*i+1)。
二叉树顺序存储和二叉链表存储各自优缺陷及合用场合,二叉树三叉链表表达办法。
2.二叉树三种遍历算法
这一知识点掌握好坏,将直接关系到树一章算法能否理解,进而关系到树一章算法设计题能否顺利完毕。
二叉树遍历算法有三种:
先序,中序和后序。
其划分根据是视其每个算法中对根结点数据访问顺序而定。
不但要纯熟掌握三种遍历递归算法,理解其执行实际环节,并且应当纯熟掌握三种遍历非递归算法。
由于二叉树一章诸多算法,可以直接依照三种递归算法改造而来(例如:
求叶子个数),因此,掌握了三种遍历非递归算法后,对付诸如:
“运用非递归算法求二叉树叶子个数”这样题目就下笔如有神了。
我会在另一篇系列文章()里给出三种遍历递归和非递归算法背记版,届时请人们一定熟记。
3.可在三种遍历算法基本上改造完毕其他二叉树算法:
求叶子个数,求二叉树结点总数,求度为1或度为2结点总数,复制二叉树,建立二叉树,互换左右子树,查找值为n某个指定结点,删除值为n某个指定结点,诸如此类等等等等。
如果你可以纯熟掌握二叉树递归和非递归遍历算法,那么解决以上问题就是小菜一碟了。
4.线索二叉树:
线索二叉树引出,是为避免如二叉树遍历时递归求解。
众所周知,递归虽然形式上比较好理解,但是消耗了大量内存资源,如果递归层次一多,势必带来资源耗尽危险,为了避免此类状况,线索二叉树便堂而皇之地浮现了。
对于线索二叉树,应当掌握:
线索化实质,三种线索化算法,线索化后二叉树遍历算法,基本线索二叉树其他算法问题(如:
查找某一类线索二叉树中指定结点前驱或后继结点就是一类常考题)。
5.最优二叉树(哈夫曼树):
最优二叉树是为理解决特定问题引出特殊二叉树构造,它前提是给二叉树每条边赋予了权值,这样形成二叉树按权相加之和是最小。
最优二叉树一节,直接考查算法源码很少,普通是给你一组数据,规定你建立基于这组数据最优二叉树,并求出其最小权值之和,此类题目不难,属送分题。
6.树与森林:
二叉树是一种特殊树,这种特殊不但仅在于其分支最多为2以及其他特性,一种最重要特殊之处是在于:
二叉树是有序!
即:
二叉树左右孩子是不可互换,如果互换了就成了此外一棵二叉树,这样互换之后二叉树与原二叉树咱们以为是不相似两棵二叉树。
但是,对于普通双分支树而言,不具备这种性质。
树与森林遍历,不像二叉树那样丰富,她们只有两种遍历算法:
先根与后根(对于森林而言称作:
先序与后序遍历)。
在难度比较大考试中,也有基于此二种算法基本上再进行扩展规定你运用这两种算法设计其他算法,但普通院校很少有这种考法,最多只是规定你依照先根或后根写出她们遍历序列。
此两者先根与后根遍历与二叉树中遍历算法是有相应关系:
先根遍历相应二叉树先序遍历,而后根遍历相应二叉树中序遍历。
这一点成为诸多学校考点,考查方式不一而足,有直接考此句话,有是先让你求解遍历序列然后回答这个问题。
二叉树、树与森林之因此能有以上相应关系,全拜二叉链表所赐。
二叉树使用二叉链表分别存储她左右孩子,树运用二叉链表存储孩子及兄弟(称孩子兄弟链表),而森林也是运用二叉链表存储孩子及兄弟。
树一章,处处是重点,道道是考题,人们务必个个过关。
第六章 图
如果说,从线性构造向树形构造研究转变,是数据构造学科对数据组织形式研究一次升华,那么从树形构造研究转到图形构造研究,则进一步让咱们看到了数据构造对于解决实际问题重大推动作用。
图这一章特点是:
概念繁多,与离散数学中图概念联系紧密,算法复杂,极易被考到,且容易出大题,特别是名校,作为考研课程,如果不考查树与图两章知识,几乎是不可想像。
下面咱们看一下图这一章重要考点以及这些考点考查方式:
1.考查关于图基本概念问题:
这些概念是进行图一章学习基本,这一章概念涉及:
图定义和特点,无向图,有向图,入度,出度,完全图,生成子图,途径长度,回路,(强)连通图,(强)连通分量等概念。
与这些概念相联系有关计算题也应当掌握。
2.考查图几种存储形式:
图存储形式涉及:
邻接矩阵,(逆)邻接表,十字链表及邻接多重表。
在考查时,有学校是给出一种存储形式,规定考生用算法或手写出与给定构造相相应当图另一种存储形式。
3.考查图两种遍历算法:
深度遍历和广度遍历
深度遍历和广度遍历是图两种基本遍历算法,这两个算法对图一章重要性等同于“先序、中序、后序遍历”对于二叉树一章重要性。
在考查时,图一章算法设计题经常是基于这两种基本遍历算法而设计,例如:
“求最长最短途径问题”和“判断两顶点间与否存在长为K简朴途径问题”,就分别用到了广度遍历和深度遍历算法。
4.生成树、最小生成树概念以及最小生成树构造:
PRIM算法和KRUSKAL算法。
考查时,普通不规定写出算法源码,而是规定依照这两种最小生成树算法思想写出其构造过程及最后身成最小生成树。
5.拓扑排序问题:
拓扑排序有两种办法,一是无前趋顶点优先算法,二是无后继顶点优先算法。
换句话说,一种是“从前向后”排序,一种是“从后向前”排。
固然,后一种排序出来成果是“逆拓扑有序”。
6.核心途径问题:
这个问题是图一章难点问题。
理解核心途径核心有三个方面:
一是何谓核心途径,二是最早时间是什么意思、如何求,三是最晚时间是什么意思、如何求。
简朴地说,最早时间是通过“从前向后”办法求,而最晚时间是通过“从后向前”办法求解,并且,要想求最晚时间必要是在所有最早时间都已经求出来之后才干进行。
这个问题拿来直接考算法源码不多,普通是规定按照书上算法描述求解过程和环节。
在实际设计核心途径算法时,还应当注意如下这一点:
采用邻接表存储构造,求最早时间和最晚时间要采用不同解决办法,即:
在算法初始时,应当一方面将所有顶点最早时间所有置为0。
核心途径问题是工程进度控制重要办法,具备很强实用性。
7.最短途径问题:
与核心途径问题并称为图一章两只拦路虎。
概念理解是比较容易,核心是算法理解。
最短途径问题分为两种:
一是求从某一点出发到别的各点最短途径;二是求图中每一对顶点之间最短途径。
这个问题也具备非常实用背景特色,一种典型应当就是旅游景点及旅游路线选取问题。
解决第一种问题用DIJSKTRA算法,解决第二个问题用FLOYD算法。
注意区别。
第七章 查找
在不少数据构造教材中,是把查找与排序放入高档数据构造中。
应当说,查找和排序两章是前面咱们所学知识综合运用,用到了树、也用到了链表等知识,对这些数据构造某一方面运用就构成了查找和排序。
现实生活中,search几乎无处不在,特别是当前网络时代,万事离不开search,小到文档内文字搜索,大到INTERNET上搜索,search占据了咱们上网大某些时间。
在复习这一章知识时,你需要先弄清晰如下几种概念:
核心字、主核心字、次核心字含义;静态查找与动态查找含义及区别;平均查找长度ASL概念及在各种查找算法中计算办法和计算成果,特别是某些典型构造ASL值,应当记住。
在DS教材中,普通将search分为三类:
1st,在顺序表上查找;2nd,在树表上查找;3rd,在哈希表上查找。
下面详细简介其考查知识点及考查方式:
1.线性表上查找:
重要分为三种线性构造:
顺序表,有序顺序表,索引顺序表。
对于第一种,咱们采用老式查找办法,逐个比较。
对于及有序顺序表咱们采用二分查找法。
对于第三种索引构造,咱们采用索引查找算法。
考生需要注意这三种表下ASL值以及三种算法实现。
其中,二分查找还要特别注意合用条件以及其递归实现办法。
2.树表上查找:
这是本章重点和难点。
由于这一节简介内容是使用树表进行查找,因此很容易与树一间某些概念相混淆。
本节内容与树一章内容有联系,但也有诸多不同,应注意规纳。
树表重要分为如下几种:
二叉排序树,平衡二叉树,B树,键树。
其中,尤此前两种构造为重,也有某些名校偏爱考B树。
由于二叉排序树与平衡二叉树是一种特殊二叉树,因此与二叉树联系就更为紧密,二叉树一章学好了,这里也就不难了。
二叉排序树,简言之,就是“左小右大”,它中序遍历成果是一种递增有序序列。
平衡二叉树是二叉排序树优化,其本质也是一种二叉排序树,只但是,平衡二叉树对左右子树深度有了限定:
深度之差绝对值不得不不大于1。
对于二叉排序树,“判断某棵二叉树与否二叉排序树”这一算法经常被考到,可用递归,也可以用非递归。
平衡二叉树建立也是一种常考点,但该知识点归根结底还是关注平衡二叉树四种调节算法,因此应当掌握平衡二叉树四种调节算法,调节一种参照是:
调节先后中序遍历成果相似。
B树是二叉排序树进一步改进,也可以把B树理解为三叉、四叉....排序树。
除B树查找算法外,应当特别注意一下B树插入和删除算法。
由于这两种算法涉及到B树结点分裂和合并,是一种难点。
B树是报考名校同窗应当关注焦点之一。
键树也称字符树,特别合用于查找英文单词场合。
普通不规定能完整描述算法源码,多是依照算法思想建立键树及描述其大体查找过程。
3.基本哈希表查找算法:
哈希一词,是外来词,译自“hash”一词,意为:
散列或杂凑意思。
哈希表查找基本思想是:
依照当前待查找数据特性,以记录核心字为自变量,设计一种function,该函数对核心字进行转换后,其解释成果为待查地址。
基于哈希表考查点有:
哈希函数设计,冲突解决办法选取及冲突解决过程描述。
第八章 内部排序
内排是DS课程中最后一种重要章节,建立在此章之上考题可以有各种类型:
填空,选取,判断乃至大型算法题。
但是,归结到一点,就是考查你对课本上各种排序算法及其思想以及其优缺陷和性能指标(时间复杂度)能否了如指掌。
这一章,咱们对重点规纳将跟以上各章不同。
咱们将从如下几种侧面来对排序一章进行不同规纳,以期能更全面理解排序一章总体构造及各种算法。
从排序算法种类来分,本章重要阐述了如下几种排序办法:
插入、选取、互换、归并、计数等五种排序办法。
其中,在插入排序中又可分为:
直接插入、折半插入、2路插入、希尔排序。
这几种插入排序算法最主线不同点,说究竟就是依照什么规则寻找新元素插入点。
直接插入是依次寻找,折半插入是折半寻找。
希尔排序,是通过控制每次参加排序数总范畴“由小到大”增量来实现排序效率提高目。
互换排序,又称冒泡排序,在互换排序基本上改进又可以得到迅速排序。
迅速排序思想,一语以敝之:
用中间数将待排数据组一分为二。
迅速排序,在解决“问题规模”这个概念上,与希尔有点相反,迅速排序,是先解决一种较大规模,然后逐渐把解决规模减少,最后达到排序目。
选取排序,相对于前面几种排序算法来说,难度大一点。
详细来说,它可以分为:
简朴选取、树选取、堆排。
这三种办法不同点是,依照什么规则选用最小数。
简朴选取,是通过简朴数组遍历方案拟定最小数;树选取,是通过“锦标赛”类似思想,让两数相比,不断裁减较大(小)者,最后选出最小(大)数;而堆排序,是运用堆这种数据构造性质,通过堆元素删除、调节等一系列操作将最小数选出放在堆顶。
堆排序中堆建立、堆调节是重要考点。
树选取排序,也曾经在某些学校中大型算法题中浮现,请人们注意。
归并排序,故名思义,是通过“归并”这种操作完毕排序目,既然是归并就必要是两者以上数据集合才也许实现归并。
因此,在归并排序中,关注最多就是2路归并。
算法思想比较简朴,有一点,要铭记在心:
归并排序是稳定排序。
基数排序,是一种很特别排序办法,也正是由于它特殊,因此,基数排序就比较适合于某些特别场合,例如扑克牌排序问题等。
基数排序,又分为两种:
多核心字排序(扑克牌排序),链式排序(整数排序)。
基数排序核心思想也是运用“基数空间”这个概念将问题规模规范、变小,并且,在排序过程中,只要按照基排思想,是不用进行核心字比较,这样得出最后序列就是一种有序序列。
本章各种排序算法思想以及伪代码实现,及其时间复杂度都是必要掌握,学习时要多注意规纳、总结、对比。
此外,对于教材中10.7节,规定必要熟记,在理解基本上记忆,这一节几乎成为诸多学校每年必考点。
至此,数据构造所有章节章节重点问题,咱们已经规纳完毕,使用清华严版教材同窗,在复习同步,可以参照本贴给出重点进行复习。
但是,由于作者本人水平有限,也许有诸多考点没有规纳出来,也也许有些考点规纳有误,在此,作者本人诚恳但愿诸位朋友直面提出.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 复习 重点 归纳 笔记 华严 蔚敏版