欢迎光临散文网 会员登陆 & 注册

数据结构拓展习题:图拓扑排序判断环路

2022-05-29 20:37 作者:回到唐朝当少爷  | 我要投稿

题目:改造拓扑排序算法,用以判断有向图是否有环路存在。


bool ExitCircle(ALGraph G)

{

       int* degree = (int*)malloc(G.vexnum * sizeof(int));

       NodeDegree(G, degree);

       Sqstack S;//零入度的顶点栈

       InitStack(S);

       int v;

       for (v = 0; v < G.vexnum; v++)

       {

              if (!degree[v])//入度为0则进栈

                     Push(S, v);

       }

       int count = 0;

       AcrNode* p;

       while (!StackEmpty(S))

       {

              int i = Pop(S);

              count++;

              for (p = G.vertices[i].firstarc; p != NULL; p = p->nextarc)

              {

                     int k = p->adjvex;

                     if (--degree[k] == 0)//如果入度减为0则入栈

                            Push(S, k);

              }

       }

       if (count < G.vexnum)

              return true;

       return false;

}



数据结构拓展习题:图拓扑排序判断环路的评论 (共 条)

分享到微博请遵守国家法律