- 9
- 0
- 约小于1千字
- 约 14页
- 2017-05-25 发布于湖北
- 举报
吉林大学数据结构_拓扑排序
拓扑排序;;所谓拓扑序列,就是把AOV网中的所有顶点排成一个线性序列,该序列满足如下条件:若AOV网中存在边Vi, Vj ,则在该序列中,Vi必位于Vj之前。
构造AOV网的拓扑序列的操作被称为拓扑排序。;?;?;对于任何无回路的AOV网,其顶点均可排成拓扑序列,并且其拓扑序列未必唯一。;拓扑排序算法的基本步骤是:
1)从网中选择一个入度为0的顶点且输出之;
2)从网中删除该顶点及其所有出边;
3)执行(1)(2),直至所有顶点已输出,或网中剩余顶点入度均不为0(说明网中存在回路,无法继续拓扑排序。因此拓扑排序算法可用来判断有向图是否存在回路)。
;我们假定AOV网用邻接表的形式存储。为实现拓扑排序算法,事先需做好两项准备工作:
1)建立一个数组count[ ],count[i]的元素值取对应顶点i的入度;
2)建立一个堆栈,栈中存放入度为0的顶点,当一个顶点的入度为0,就将其压入栈。
;事实上,我们可以不为该顶点栈另外分配存储空间,而是直接利用入度为0的顶点的count[ ]数组元素的值来模拟堆栈的压入和弹出。;(1)设置一个“栈顶指针”top,以指示当前“栈顶”位置(这里的“栈”是模拟的,实际并不存在真正的堆栈);
(2)初始化“栈”时,top值设为-1,表示“栈”空,对应如下语句:
top
原创力文档

文档评论(0)