第一章 绪论
1.数据结构的三要素:逻辑结构,存储结构,数据的运算
2.数据元素是数据的基本单位,数据元素可由若干数据项组成,数据项是构成数据元素的不可分割的最小单位。例如:学生记录就是一个数据元素,它由学号姓名性别等数据项组成。
3.逻辑结构是指数据元素之间的逻辑关系,与数据存储无关,独立于计算机。逻辑结构分为线性结构和非线性结构,线性结构包含线性表,栈和队列,串等数据结构,非线性结构包含集合,树,图等数据结构。
4.存储结构是指数据结构在计算机中的表示(又称映像),也称物理结构。主要有顺序存储、链式存储、索引存储、散列存储(hash)。
5.算法中所有语句的频度之和记为T(n),时间复杂度主要分析T(n)的数量级,那O(n)是啥?(答:大O符号是用于描述函数渐进行为的数学符号,更确切地说O的含义是T(n)的数量级,T(n) = O(f(n)) 。 )
第二章 线性表
1.线性表定义:线性表是具有相同数据类型的n(n>=0)个数据元素的有限序列。除第一个元素外,每个元素有且仅有一个直接前驱。除最后一个元素外,每个元素有且仅有一个直接后继。
2.线性表是一种逻辑结构,表示元素之间一对一的相邻关系。顺序表和链表是指存储结构。
3.顺序表特点:逻辑顺序与其物理顺序相同。
4.链表:不需要使用地址连续的存储单元,即不要求逻辑上相邻的元素在物理位置上也相邻,它通过"链"建立起数据元素之间的逻辑关系。
5.顺序表链表对比: ①存取方式:顺序表可以顺序存取也可以随机存取,但链表只能从表头顺序存取元素②逻辑结构和存储结构(物理结构):顺序表逻辑上相邻的元素物理存储位置也相邻,链表逻辑上相邻的元素物理存储位置不一定相邻。③基本操作:对于按值查找,顺序表无序 O(n),有序则通过二分O(log2n),链表都是O(n);对于按下标查找,顺序表因为支持随机访问O(1),而链表平均O(n);对于增删操作,顺序表平均移动半个表长,而链表则只需要修改相关结点的指针域即可;对于空间分配,顺序表为防止内存溢出或大量闲置需要预先分配合理的存储空间,链式存储的结点空间只在需要时申请分配,只要内存有空间就可以分配,操作灵活、高效。
第三章 栈与队列
1.栈是只允许在一端进行插入或删除操作的线性表。栈顶是允许进行插入删除的一端。后进先出。可顺序存储或链式存储。
2.队列只允许在表的一端进行插入,而在表的另一端进行删除,插入元素称为入队/进队;删除元素称为出队/离队。先进先出。可顺序存储或链式存储。
第四章 串
1.字符串模式匹配:①暴力O(mn),②kmpO(m+n)
2.kmp算法: 略
第五章 树与二叉树
1.树的特点: 树的根结点无前驱,除根结点外的所有结点有且只有一个前驱 ,树中所有结点可以有零个或多个后继.
2.基本术语
- 结点的度:结点的孩子个数;树的度:最大的结点的度
- 叶子结点:度为0的结点
- 结点深度:以根结点为1开始计数,逐层累加
- 结点高度:以其叶结点开始,自底向上逐层累加
- 树的深度(高度):最大层数
- 路径和路径长度:两个结点之间所有经过的结点序列,长度为路径上经过的边得个数
3.树的性质
1)树中的结点数等于所有结点的度数之和+1
2)度为m的树中第i层上至多有m^(i-1)个结点(i>=1)
3)高度为h的m叉树至多有(m^h-1) / (m-1)个结点
4)具有n个结点的m叉树的最小高度为Ceil(logm(n(m-1) + 1)).
4.二叉树定义:每个结点至多只有两棵子树(即二叉树中不存在度数大于二的结点),并且二叉树的子树有左右之分,其次序不能任意颠倒.
5.满二叉树:高度为h,且含有2^h - 1个结点的二叉树; 完全二叉树:高度为h,有n个结点的二叉树,当且仅当其每个结点都与高度为h的满二叉树中编号为1~n的结点一一对应时,称为完全二叉树.
6.二叉排序树:左子树所有结点key值小于根结点的key值;右子树所有结点key值小于根结点的key值.左右子树又各是一颗二叉排序树.
7.平衡二叉树:树上任一结点的左右子树深度之差不超过1
8.二叉树的性质:①非空二叉树上的叶子结点数等于度为2的结点数+1. n0 = n2 + 1,证明略;②非空二叉树上第k层上至多有2^(k-1)个结点.③高度为h的二叉树至多有2^h - 1个结点(h>=1);④对于完全二叉树的从上到下,从左到右依次编号1,2,...,n,有这些关系:当i>1时 i 爸爸编号 floor(i/2) (floor()向下取整函数, ceil()向上取整函数);i 的左孩子 2i,;i 的右孩子2i+1;结点i所在层次的深度为 floor(log2(i)) + 1
9. 具有n个结点的完全二叉树的高度为 ceil(log2(n+1))或 floor(log2(n)) + 1
10. 二叉树的遍历:先 (根左右),中(左根右),后(左右根),层次遍历.
11.树,森林与二叉树的互相转换
12.树和森林的遍历:树:1)先根遍历2)后根遍历 森林:1)先序遍历2)中序遍历
13.平衡二叉树 四种旋转。
14.哈夫曼树定义:带权路径长度(WPL)最小的二叉树称为哈夫曼树,也称最优二叉树。
---持续更新中