正在加载图片...
for(x=0; X<G. vexnum; x++) for(p=G vertices[x]. firstarc: p: p=p->nextarc) y=p->adjvex for(q=G vertices ]. firstarc; q: q=q->nextarc) if(zl=x&&! is adj(G, x, z)) return 0; i//for i//Pass ALGraph int is adj( ALGraph C, int m, int ny/判断有向图G中是否存在边(mn),是则返回1, 否则返回0 for(p=G vertices(m). firstarc p: p=p->nextarc) if(p->adjvex--n) return 1 return 0 i//is adj 722 int visited MAXSIZE]∥指示顶点是否在当前路径上 int exist_ path DFS( ALGraph G, int i, int j)∥/深度优先判断有向图G中顶点i到顶点 j是否有路径是则返回1,否则返回0 ifi=j) return1;∥就是 visited [F=1 for(p=G vertices ]. firstarc, p: p=p->nextarc) k=p->adjvex if(!visited [k]&& exist_path(kj) return 1/下游的顶点到j有路径 i//else i//exist path DFS 7.23 int exist path BFS( ALGraph g,nti,itj)∥广度优先判断有向图G中顶点i到顶点 j是否有路径,是则返回1,否则返回0{ for(x=0;x<G.vexnum;x++) for(p=G.vertices[x].firstarc;p;p=p->nextarc) { y=p->adjvex; for(q=G.vertices[y].firstarc;q;q=q->nextarc) { z=q->adjvex; if(z!=x&&!is_adj(G,x,z)) return 0; }//for }//for }//Pass_ALGraph int is_adj(ALGraph G,int m,int n)//判断有向图 G 中是否存在边(m,n),是则返回 1, 否则返回 0 { for(p=G.vertices[m].firstarc;p;p=p->nextarc) if(p->adjvex==n) return 1; return 0; }//is_adj 7.22 int visited[MAXSIZE]; //指示顶点是否在当前路径上 int exist_path_DFS(ALGraph G,int i,int j)//深度优先判断有向图 G 中顶点 i 到顶点 j 是否有路径,是则返回 1,否则返回 0 { if(i==j) return 1; //i 就是 j else { visited[i]=1; for(p=G.vertices[i].firstarc;p;p=p->nextarc) { k=p->adjvex; if(!visited[k]&&exist_path(k,j)) return 1;//i 下游的顶点到 j 有路径 }//for }//else }//exist_path_DFS 7.23 int exist_path_BFS(ALGraph G,int i,int j)//广度优先判断有向图 G 中顶点 i 到顶点 j 是否有路径,是则返回 1,否则返回 0 {
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有