目录
前言
最近数据结构这门课结课,在此总结一些知识点 教材是清华大学 严蔚敏 吴伟民 数据结构(C语言版)
Chapter 1 绪论——必须掌握的基本概念
Chapter 2 线性表
easy and omitted.
Chapter 3 栈和队列
1.栈和队列的特点&在应用中正确选用它们
栈:后进先出;队列:先进先出
2.熟练掌握站的两种实现方法(顺序栈和链栈),注意栈空栈满条件以及它们的描述方法
栈满:top.base==stacksize(无可分配空间);栈空:top==base;
3.熟练掌握循环队列和链队列的基本操作实现算法,特备注意队满和队空的描述方法。
链队列 队空条件:front==rear;
循环队列如下表:
chapter 4 字符串
easy and omitted.
chapter 5 数组与广义表
1.(1)数组的两种存储表示方法
行序为主序;列序为主序;
(2)数组在以行为主的存储结构中的地址计算方法
2.掌握对特殊矩阵压缩存储时的下标变换公式
3.(1)稀疏矩阵的两类压缩存储方法的特点及适用范围;
三元组:(1)行逻辑链接的顺序表;(2)十字链表;(了解即可)
(2)领会以三元组表示矩阵进行矩阵运算时所采用的处理方法。
快速转置运算:cpot[1]=1;
cpot[col]=cpot[col-1]+num[col-1];2<=col<=a.nu.
4.广义表的结构特点及其存储表示方法。学会对非空广义表进行分解:将一个非空广义表分解为表头和表尾两部分
5.掌握广义表的递归算法设计
Chapter 6 树和二叉树
1.掌握二叉树的结构特性,了解相应的证明方法
2.二叉树的各种存储结构的特点及其适用范围
(1)顺序存储结构(完全二叉树)
(2)链式存储结构(二叉链表、三叉链表)
(3)静态二叉链表
3.二叉树遍历递归实现
4.理解二叉树线索化的实质是建立结点与其前驱或者后继之间的联系。掌握二叉树的线索化过程以及在中序线索化树上找给定结点的前驱或后继的方法
5.树的各种存储结构及其特点,掌握树和森林与二叉树的转换方法
(1)双亲表示法(找孩子节点时需要遍历整个树)
(2)孩子表示法 a.多重链表(定长节点与不定长节点)b.孩子链表
(3)孩子兄弟表示法,又称二叉树表示法,或者二叉链表表示法
6.学会编写实现树的各种操作的算法
7.了解最优树的特性,掌握建立最优树和哈夫曼编码的方法
哈夫曼树的构造过程的正确性的证明:
(1)首先我们易得最优树中只能有度为2的结点(设有n2个),和度为0的结点(设为n0个)。再由n0=n2+1可得,最优树中的结点形态一定。
(2)树的带权路径长度为树中所有除根结点以外的所有节点上的数据的和。这样就归结为证明哈夫曼树的构造过程保证了每一步得到的结点的数据是所有可能中最小的。而由哈夫曼树的构造过程可知这一点是成立的。
Chapter 7 图
Dijkstra算法的实质以及正确性:由于是按路径长度递增选择结点,V到Vn的最短路径中的中间节点提前于Vn被选出。设V到Vn的中间节点中最靠近Vn的那一个为Va,则Va提前于Vn被选出,并且在紧接着的的数据更新中,Vn对应的数据就被更新为V到Vn的最短路径。这样当下一次选到Vn时,对应的数据就是所求的V到Vn的最短路径。
Floyd算法的实质:加入结点V1,V2,...Vi后,所有中间节点位于集合{V1,V2,...Vi}中的最短路径对应的数组元素都被更新为最短路径的数值。
Chapter 8 动态存储管理
了解即可
Chapter 9 查找
1.次优查找树
2.哈希表:哈希表的平均查找长度与装载因子α成正比,而与具体存储空间的数目n无关。
Chapter 10 内部排序
按照排序的原则分类:
插入排序:直接插入排序,折半插入排序,希尔排序
交换排序:冒泡排序、选择排序
选择排序:简单选择排序、堆排序
归并排序:2—路归并排序
基数排序:基数排序
注意:大根堆可以保证堆顶是最大元,但不能保证堆的最后一个元素是最小元。
Chapter 11 外部排序
1.外存信息的存取
2.外部排序的方法
K-路归并中优化排序
概念:顺串(归并段)
排序:置换——选择排序;胜者树,败者树;类比扫雪机可得置换——选择排序所得归并段的长度为2w(其中w为内存容量)
3.最佳归并树