为了平时复习时方便,把每一章需要掌握的内容记录在此,这样浓缩的看,也好在脑子里面形成比较系统的思维导图。
文章目录
408数据结构知识点汇总
第一章 绪论
- 分析算法的时间复杂度
- 分析算法的空间复杂度
第二章 线性表
- 线性表的定义
- 线性表的基本操作(基于顺序表和链式存储的两种形式)
- 线性表的实现
- 链式存储—>顺序表
- 顺序存储
- 链式存储
- 单链表
- 双链表
- 循环链表
- 静态链表(借助数组实现)
- 链式存储
第三章 栈和队列
- 栈和队列的概念
- 栈和队列的顺序存储结构及其特点
- 栈和队列的链式存储结构及其特点
- 栈和队列的应用
- 栈
- 前缀后缀表达式的转换和求解
- 队列
- 图的广度优先遍历和二叉树的层次遍历时需要借助队列
- 栈
- 双端队列的特点
- 特殊矩阵的压缩存储
第四章 串
- 统考大纲只要求掌握字符串模式匹配,需要重点掌握KMP算法的原理及其next数组的推理过程,手工求next数组可以先计算出部分匹配值表然后再变形,或根据公式来求解。
- 了解nextval数组的求解方法
- 字符串模式匹配
- 本章唯一的重点和难点:KMP算法
树与二叉树
- 树的概念
- 二叉树
- 二叉树的定义及其主要特征
- 二叉树的顺序存储和链式存储结构
- 二叉树的遍历
- 线索二叉树的基本概念和构造
- 树与森林
- 树的存储结构
- 森林与二叉树的转换
- 树和森林的遍历
- 树与二叉树的应用
- 二叉排序树
- 平衡二叉树
- 哈夫曼树
- 哈夫曼编码
本章多以选择题的形式考查,但也会涉及树遍历相关的算法题。树和二叉树的性质,遍历,转换,存储结构和操作特性等。满二叉树,完全二叉树,线索二叉树,哈夫曼树的定义和性质,二叉排序树和二叉平衡排序树的性质和操作等,都是选择题必然涉及的内容
第六章 图
- 图的基本概念
- 图的存储和基本操作
- 邻接矩阵法
- 邻接表法
- 邻接多重表
- 十字链表
- 图的遍历
- 深度优先搜索(DFS)
- 广度优先搜索(BFS)
- 图的相关应用
- 生成树
- 最短路径
- 拓扑排序
- 关键路径
应该掌握图的基本概念,图的存储结构及其特性,存储结构之间的转化,基于存储结构上的遍历操作和各种应用(拓扑排序,最小生成树,最短路径和关键路径)等
图的相关算法较多,易混,但通常只要掌握其基本思想和实现步骤(能动手模拟),而算法的具体实现不是重点
第七章 查找
查找的基本概念
顺序查找法
分块查找法
折半查找法
B树及其基本操作,B+树的基本概念
散列表
散列函数的:把一个查找表中的关键字映射成该关键字对应的地址的函数
散列表:根据散列表而直接进行访问的数据结构
同义词:发生冲突的不同的关键字叫做同义词
冲突:散列函数可能会把两个或两个以上的不同的关键字映射到同一个地址,这种情况叫做冲突
散列函数的构造方法:
- 散列函数的定义域必须包含需要存储的关键字
- 散列函数计算出来的地址应该能够等概率,均匀的分布在整个地址空间
- 散列函数应该尽量简单,能够在短时间内可以被计算出来
常见的散列函数:
直接定址法:直接去关键字的某个线性数值为散列地址,散列函数为
H
(
k
e
y
)
=
a
∗
k
e
y
+
b
H(key)=a*key+b
H(key)=a∗key+b,其中a,b都是常数。这种计算方法比较简单,并且不会产生冲突。
有点:适合关键字分布基本连续的情况
缺点:当关键字不连续时,产生较多的空缺,浪费空间
除留余数法:这是一种,最简单,最常用的方法。假定散列表的长度为m,取一个不大于m,但最接近或等于m的质数,利用下面的公式把关键字转换成散列表地址,
H
(
k
e
y
)
=
k
e
y
H(key)=key%p
H(key)=key。
除留余数法的关键是选好p,使得每个关键字通过该函数转换后等概率的映射到散列表空间的任一地址,从而尽可能的减少冲突。
数字分析法
平方取中法
折叠法
处理冲突的方法
开放地址法
概念:是指可存放新表项的空闲地址既向它的同义词开放,又向他的非同义词开放。
H
i
=
(
H
(
k
e
y
)
+
d
i
)
H_i=(H(key)+d_i)%m
Hi=(H(key)+di),i=0,1,2,3,……,k(k<=m-1);m为散列表表长,
d
i
d_i
di为增量序列
如何计算增量序列:
- 线性探测法(重要)
- 优点:
- 缺点:堆积现象会大大降低查找效率
- 平方探测法:即
d
i
=
0
2
,
1
2
,
−
1
2
,
2
2
,
−
2
2
.
.
.
.
,
k
2
,
−
k
2
d_i=0^2,1^2,-1^2,2^2,-2^2....,k^2,-k^2
di=02,12,−12,22,−22....,k2,−k2,其中k<=m2/;
- 优点:避免堆积问题
- 缺点:不能探测到散列表上所有的单元(至少可以探测到一般的单元)
- 再散列法: d i = i ∗ H a s h 2 ( k e y ) d_i=i*Hash2(key) di=i∗Hash2(key),当发生冲突时再调用一个散列函数去映射
- 伪随机法: d i = 伪 随 机 序 列 d_i=伪随机序列 di=伪随机序列
开放定址法的缺点:对于删除一个已经在散列表中的元素不友好,删除一个元素可能会导致某些元素失去索引
拉链法
概念:是指把所有的同义词都存放在一个线性的链表中,这个线性的链表由地址唯一标识,即散列表中每个单元存放该链表头指针。
拉链法适用于经常进行插入和删除的情况
填装因子
概念:一般记为
α
\alpha
α,表示表的装满程度
α = 表 中 记 录 数 n 散 列 表 长 度 m \alpha=\frac{表中记录数n}{散列表长度m} α=散列表长度m表中记录数n
散列表的平均查找长度依赖于散列表的填装因子
查找算法的分析应用
本章是考研的重点。对于散列查找,应该掌握散列表的构造,冲突处理方法(各种方法处理过程)、查找成功和查找失败的平均查找长度,散列表查找的特征和性能分析。对于折半查找,应该掌握这般查找的过程,构造判定树,分析平均查找长度。B树和B+树是本章的难点。对于B树,考研大纲要求掌握插入,删除和查找的操作过程。对于B+树,仅要求掌握基本概念和性质
以上内容参考王道数据结构