此为个人考研期间整理的数据结构的相关知识点
算法的定义和特征:算法是解决某特定问题的有穷操作的集合;算法的特性是:输入、输出、有穷性、可行性和确定性
平均查找长度:对关键字进行比较的次数
数据、数据元素和数据结构
- 数据:用户输入到计算机被计算机处理的一些符号
- 数据元素:数据的基本单位,用于描述一个对象
- 数据结构:数据元素及其关系的组合
- 抽象数据类型/ADT:某种数学模型及其所有操作
- 存储结构:区别于逻辑结构,是数据结构在计算机中的表示
**各个数据结构见的比较:**横向上从创建、消除、增加、删除、修改五个维度;纵向上从时间和空间两个维度来比较和描述
哈夫曼树和普通二进制编码:
- 哈夫曼树:编码效率高,但是稳定性差(改变一个bit 后可能会出现重大差异)
- 普通二进制编码:编码效率低,所需空间大,但是稳定性强
希尔排序:插入排序的一种改进版本
- 挑选一个间隔k(一般为数组长度的一半)
- 根据k间隔进行分组,之后对每个分组进行排序
- 将k缩小为1/2,重新进行分组排序
- 当k为1时,排序完成
▲往往希尔排序的时间复杂度不会到达O(n2)
二维数组的存储:
- 行优先:先存第一行再存第二行…
- 列优先:先存第一列再存第二列…
算法和程序:
- 算法是一种半程序化的语言
- 程序是一种计算机语言,是一种程序化的语言
完全二叉树:度为0的节点个数记为n0,度为1的节点个数记为n1,度为2的节点个数记为n2;则n1=0或1;n0=n2+1
树,二叉树和森林的相互转化:核心思想即将(多叉)树转换为二叉树时,其左孩子代表该节点的第一个孩子,右孩子表示该节点的第一个孩子的兄弟节点,二叉树和森林的转换同理
头指针、头节点和开始节点:
- 头指针:指向链表第一个结点的指针,该第一个节点可以是头节点也可以是开始节点
- 头节点:在链表的首个数据节点之前插入的一个节点,数据域内只存放表长和空表标志等信息,用于统一后续的编码操作
- 开始节点:指链表中第一个开始存储数据的节点
B树的插入和删除操作
二叉线索树的前驱和后继节点的查找
二叉树的前序、中序和后序代码(使用栈而非递归)
中缀表达式和后缀表达式的转换
Dijkstra算法和Floyol算法
图的广度和深度遍历及其实现
二叉平衡树/ACL 的调整