逆拓扑排序判断回路代码
时间: 2023-12-11 08:30:37 浏览: 145
拓扑排序算法
逆拓扑排序可以用来判断有向无环图(DAG)中是否存在回路。如果存在回路,则无法进行拓扑排序。以下是逆拓扑排序判断回路的代码:
```
bool TopologicalSort(Graph G) {
InitStack(S); //初始化栈
for(int i=0;i<G.vexnum;i++) {
if(Dedegree[i]==0) //度为0的顶点入栈
{
push(S,i);
}
}
int count=0; //计数
while(!IsEmpty(S)) {
pop(S,i);
print[count++]=i;
for(p=G.vertices[i].firstarc;p;p=p->nextarc)//将指向i的顶点的出度减1,并且将出度减为0的顶点压入栈中
{
v=p->adjvex;
if(!(--Dedegree[v])) {
push(S,v)
}
}
}
if(count<G.vexnum) //拓扑排序失败,说明有回路
{
return false;
}
else {
return true;
}
}
```
阅读全文