博主正在学习“算法设计与分析”课程,做一些笔记供自己回忆。
数据结构
- 线性表:将具有“一对一”逻辑关系的数据“线性”存储到物理空间中。分为顺序表和链表。
- 顺序表:提前申请一整块足够大小的物理空间,然后将数据依次存储起来,存储时做到数据元素之间不留一丝缝隙。
- 链表:数据元素随机存储,并通过指针表示数据间的逻辑关系。
- 队列:属于线性表,两端开口,要求从一端进,另一端出,遵循“先进先出”原则。
- 栈:属于线性表,是只能从表的一端存取数据且遵循“先进后出”原则的线性存储结构。
- 堆:节点的值总是不大于或不小于其父节点的值,是一棵完全二叉树。
图
- 有向图/无向图:处理满足“多对多”逻辑关系的数据。
- 路:从一个顶点到另一个顶点途径的所有顶点所组成的序列(包括这两个顶点)。
- 圈:第一个顶点和最后一个顶点相同。
- 树:处理满足“一对多”逻辑关系的数据。
- 握手定理:无向图中所有节点的度数之和等于边数的2倍;有向图中所有节点的入度之和等于出度之和,所有节点的度数之和等于边数的2倍。