如何判断一个有向图中是否含有环路?
2009-09-27 14:48
253 查看
拓扑排序
(1)在有向图中选一个没有前驱的顶点且输出之
(2)从图中删除该顶点和所有以它为尾的弧。
重复上述两步,直至全部顶点均已输出,或者当前图中不存在无前驱的顶点为止,后一种情况则说明有向图中存在环。
可采用邻接表作为有向图的存储结构。具体算法如下:
(1)在有向图中选一个没有前驱的顶点且输出之
(2)从图中删除该顶点和所有以它为尾的弧。
重复上述两步,直至全部顶点均已输出,或者当前图中不存在无前驱的顶点为止,后一种情况则说明有向图中存在环。
可采用邻接表作为有向图的存储结构。具体算法如下:
int TopoSort(ALGraph G) { FindInDegree(G,indegree); //对各顶点求入度 InitStack(S); for(i=0;i<G.vexnum;++i) if(!indegree[i])Push(S,i); //入度为0者进栈 count=0; while(!StackEmpty(S)) { Pop(S,i); printf("i,G.vertices[i].data"); ++count; for(p=G.vertices[i].firstarc; p; p=p->nextarc) { k=p->adjvex; if(!(--indegree[k]))Push(S,k); //若入度减为0,则入栈 } } if(count<G.vexnum)return 0; //该有向图存在环 else return 1; }
相关文章推荐
- 如何判断一个有向图中是否含有环路?
- 如何判断一个字符串中是否含有中文
- 如何判断一个单向链表是否有环路
- 怎么使用jquery判断一个元素是否含有一个指定的类(class)另外如何给元素动态添加类
- 如何判断一个对象是否含有属性
- oracle中如何判断一个字符串是否含有汉字
- 如何判断一个单向链表是否有环路?
- oracle中如何判断一个字符串是否含有汉字
- Oracle中如何判断一个字符串是否含有汉字
- 如何判断一个字符串是否含有中文
- 如何判断一个字符串中是否含有汉字或汉字标点(即双字节字符)
- 在不同数据库中如何判断一个字符串内是否含有中文?
- 如何判断一个链表是否有环,如果有环,并找出环的入口
- 如何判断一个featureclass是否存在
- 题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
- C#判断一个字符串是否是数字或者含有某个数字的方法
- 使用jquery判断一个元素是否含有一个指定的类(class)实例
- 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请按成 一个函数,输入这样一个二维数组和一个整数,判断数组中是否含有该整数
- 如何判断一个字符串是否全由数字组成
- 如何用js判断一个复选框是否被选中?