...
拓扑排序还可以用于判断环,当图中存在环,说明存在互相依赖的前置关系,一定是无法对全部结点进行拓扑排序的。
算法设计:
- 求出各顶点的入度,并将所有入席为0的顶点入栈。
- 在栈不为空的情况下,重复执行以下操作:
- 栈顶元素出栈,并保存到拓扑排序结果数组topo[]中;
- 顶点元素的所有邻接点入度减1,如果减1后入度为0,则入栈。
- 栈为空之后,如果拓扑排序输出的顶点数小于顶点总数,则说明有环,否则拓扑排序完成。
除了可以用栈来实现拓扑排序,还可以直接借助递归来实现,以下是拓扑排序的代码示例:
代码块 |
---|