时间复杂度 O(m+n)
检查有向图中是否存在回路的方法之一就是拓扑排序
这里记载两种拓扑排序的方法
方法一:堆栈或队列法
严蔚敏所著的数据结构书对这段描述存在错误
正确的描述应为:
- 在图中选取没有入度的点入栈或入队
- 出栈或出队,将其出度点的入度减一,如果入度数降为0,入栈或入队
代码实现
//使用邻接链表
struct chududian
{
int n;
struct chududian *next;
};
struct node
{
int rudu;
struct chududian *next;
}G[N];
{
int n;
struct chududian *next;
};
struct node
{
int rudu;
struct chududian *next;
}G[N];
void tuopu()
{
int stackn
{
int stackn