1、基本数据结构:
- 链接存储空间是离散的,物理离散,逻辑连续
- 链表:单链表,单循环链表,双循环链表
- 单链表:
• 删除:前驱结点的后继指向后结点的前驱
• 插入:先连后断,先链接后继结点,再确定前驱结点;
- 双链表:
• 插入:按照单链表的思路,一条链一条链进行,先完成两个操作的第一步,然后执行第二步;
- 删除图示:
3. 顺序表与链表的比较:
• 空间性能,时间性能;
• 空间性能:
存储密度:顺序存储:是顺序的,链式存储存储一个数据既需要占用存储一个数据的空间,指针也要占用空间
4. 栈,队列:
• 栈:后进先出,
• 队列:先进先出,队尾指针=队首指针+1-----判空条件
2、树和二叉树
- 查找二叉树(二叉排序树)基本定义:
• 查找树的左右子树各是一棵查找树;
• 若左子树不为空,则左节点 < 根节点
• 若右子树不为空,则左节点 > 根节点
插入节点:**查找**-键值相同结点不插入、空树-新节点为查找二叉树;
**比较**-与插入后父节点键值比较;
**插入**-相应位置插入;
删除节点:
- 最优二叉树(哈夫曼树):
• 树的路径长度
• 权:
• 带权的路径长度:
• 树的带树路径长度:
• 哈夫曼树构造过程:
0.1 从所有节点中选择两个最小的树作为左右子树构造一棵新树,(最接近的)
0.2 重复上述过程
编码:
- 线索二叉树:
- 平衡二叉树:
• 定义:是一棵空树,或者是:树中任一结点的左右子树的深度相差不超过1:,结点平衡度只能是-1,1,0;
• 右-左<=1
- 二叉树:
• 重要特性:
• 遍历:前序、中序、后序、层次
• 树与二叉树的转换:断、连
3、图:
- 有向图 ( ),无向图 < >
• 顶点的度,入度,出度;
• 连通图,连通分量
- 图的存储–
• 邻接矩阵,
• 邻接表---
3. 图的遍历:深度优先遍历--先序,广度优先遍历---层次;
4. 最小生成树---普里姆算法-按顶点归并,克鲁斯卡尔-按边归并
- 拓扑排序:
• AOV网络--把有向边表示活动之间的先后关系,这种有向图称为用顶点表示活动网络,
简称AOV网络
拓扑排序:
4、查找算法:
1. 顺序查找:平均查找长度ASL:(n+1)/2
2. 二分查找: 有序--效率最高
3. 分块查找:分块--块内可无序,块间有序
查找:找块-顺序查找