图
1 图的遍历是从给点的源点出发,每一个顶点仅被访问一次,遍历的基本算法有两种:深度遍历DFS和广度遍历BFS,基于递归实现,并且都适用于有向图和无向图。
2拓扑排序算法时间复杂度为O(n+e)
3 n个顶点的连通图至少有n-1条边(树);n个顶点的简单图(完全图)至少有n*(n-1)/2条边。
4 拓扑排序,每个结点的所有前驱结点都排在该结点的前面。
数组
1 对称矩阵存储,a1,1的地址为1,则a8,5的地址为:对称矩阵,则只需要存一半就行了,第一行:1个第二行:2个 第三行3个.......所以为1+2+3+4+5+6+7+5=33
链表
1 线性二叉链表左孩子域:0:指示左孩子,1:指示节点的前驱,右孩子域:0:指示右孩子,1:指示节点的后继
排序
不稳定的:快些(希)选堆
nlog2n的:快些(希)归队(堆)
队列
1 队列的链式存储有循环队列和链队列
循环队列是事先申请好空间,使用期间不会释放,但空间会有浪费的可能
链队列申请和释放结点空间更加灵活些,但会存在时间和空间的开销
概括来讲:可以确定链队列最大长度的情况下,建议使用循环队列,如果无法预估队列队列的长度,则使用链队列。
队列中元素的个数:(rear-front+QueueSize)%QueueSize