拓扑排序

简介:

伪代码如下:

1. 栈S初始化;累加器count初始化;

2. 扫描顶点表,将没有前驱(即入度为0)的顶点压栈;

3. 当栈S非空时循环

    3.1 vj=退出栈顶元素;输出vj;累加器加1;

3.2 将顶点vj的各个邻接点的入度减1;

3.3 将新的入度为0的顶点入栈;

4. if (count<vertexNum) 输出有回路信息;




用栈和队列都可以实现拓扑排序,只是打印顺序不同

相关文章
|
6月前
拓扑排序
拓扑排序
43 0
|
6月前
|
存储 人工智能 算法
【算法总结】拓扑排序
【算法总结】拓扑排序
57 0
|
搜索推荐
|
人工智能 自然语言处理 搜索推荐
拓扑排序算法
拓扑排序算法
135 0
|
存储 算法 Java
【数据结构与算法】有向图的拓扑排序
【数据结构与算法】有向图的拓扑排序
205 1
【数据结构与算法】有向图的拓扑排序
拓扑排序(邻接表实现)
拓扑排序(邻接表实现)
188 0
拓扑排序(邻接表实现)
拓扑排序-Kitchen Plates
J. Kitchen Plates time limit per test1 second memory limit per test256 megabytes inputstandard input outputstandard output
122 0
拓扑排序-Kitchen Plates
|
搜索推荐 算法
拓扑排序算法模板
拓扑排序
110 0
|
存储
拓扑排序讲解+例题
比如说给定若干个两个元素之间的大小关系,要转换成所有元素的总体大小关系,就可以用拓扑排序来处理 下面给出的例题就是这个样子 关于拓扑排序还有一种用法->判断给定的有向图中是否存在环 下面来说明一下拓扑排序的相关步骤: (默认已经将图存好)首先统计所有点的入度,然后将所有点入度为0的所有点放进队列(根据题目特殊要求也可以使用优先队列) 然后采取像BFS那样的方式,当队列非空的时候,始终取队列头端的一个元素,并将这个元素记录下来之后pop掉,把这个点(比如说是点P)放进用来存储拓扑序列的不定长数组vector中,然后遍历和这个点相连的所有点,并将与点P相连的所有点的入度减少1
124 0