拓扑排序
void TopologicalSort(Graph G){
	InitStack(S);
	for(i = 0;i < G.vexnum; i++){
		if(indegrdd[i]==0)
			Push(S, i);
	}

	int count =0;
	while(!Empty(S)){
		Pop(S,i);
		print[count++] = i;
		for(p = G.vertices[i].firstarc; p; p = p->nextarc){
			v = p->adjvex;
			if(!(--indegree[v]))
				Push(S, v);
		}
	}

	if(count < G.vexnum)
		return false;
	else
		return true;
}

更多推荐