[图] 7.2 逆拓扑排序 - C实现 - DFS方法

版权声明:本文为博主原创文章,若有错误之处望大家批评指正!转载需附上原文链接,谢谢! https://blog.csdn.net/summer_dew/article/details/83044629

拓扑排序原理:https://blog.csdn.net/summer_dew/article/details/81604206

【逆拓扑排序】

  1. 从有向图中选择一个出度为0的顶点输出
  2. 删除1中的顶点,并且删除指向该顶点的全部边
  3. 重复上述两步,直到剩余的图中不存在出度为0的顶点为止

【求法】

  1. 方法一:拓扑排序修改中进行修改,将入度改成出度即可
  2. 方法二:深度优先遍历的方法
    结点没有边的时候输出 --> 输出的是从尾到头的序列 --> 逆拓扑序列
void DFS(int v, ALGraph *pG) {
	visit[v] = 1;
	ArcNode *q = pG->vers[v].firstarc;
	while (q!=NULL) {
		if (visit[q->adjV]==0)
			DFS(q->adjV, pG);
		q=q->next;
	}
	Visit(v); //v的邻边都被访问过了,再输出
		//第一个输出的,就是v没有邻边-->即末端的结点
}

猜你喜欢

转载自blog.csdn.net/summer_dew/article/details/83044629