第12周项目4 - 利用遍历思想求解图问题(5)
来源:互联网 发布:手机做电子相册的软件 编辑:程序博客网 时间:2024/06/08 17:17
/* * Copyright (c)2016,烟台大学计算机与控制工程学院 * All rights reserved. * 文件名称:main.cpp * 作 者:何大冰 * 完成日期:2016年11月17日 * 版 本 号:v1.0 * 问题描述:求图中通过某顶点k的所有简单回路(若存在) */ #include <stdio.h> #include <malloc.h> #include "graph.h" int visited[MAXV]; //全局变量 void DFSPath(ALGraph *G,int u,int v,int path[],int d) //d是到当前为止已走过的路径长度,调用时初值为-1 { int w,i; ArcNode *p; visited[u]=1; d++; path[d]=u; p=G->adjlist[u].firstarc; //p指向顶点u的第一条边 while (p!=NULL) { w=p->adjvex; //w为顶点u的相邻点 if (w==v && d>0) //找到一个回路,输出之 { printf(" "); for (i=0; i<=d; i++) printf("%d ",path[i]); printf("%d \n",v); } if (visited[w]==0) //w未访问,则递归访问之 DFSPath(G,w,v,path,d); p=p->nextarc; //找u的下一个邻接顶点 } visited[u]=0; //恢复环境:使该顶点可重新使用 } void FindCyclePath(ALGraph *G,int k) //输出经过顶点k的所有回路 { int path[MAXV],i; for (i=0; i<G->n; i++) visited[i]=0; //访问标志数组初始化 printf("经过顶点%d的所有回路\n",k); DFSPath(G,k,k,path,-1); printf("\n"); } int main() { ALGraph *G; int A[5][5]= { {0,1,1,0,0}, {0,0,1,0,0}, {0,0,0,1,1}, {0,0,0,0,1}, {1,0,0,0,0} }; //请画出对应的有向图 ArrayToList(A[0], 5, G); FindCyclePath(G, 0); return 0; }
运行结果:
心得体会:
输出某个顶点的回路
0 0
- 第12周上机实践项目4 - 利用遍历思想求解图问题(5-7)
- 第12周项目4利用遍历思想求解图问题(1-5)
- 第12周 项目4 - 利用遍历思想求解图问题 (1-5)
- 第12周项目4-利用遍历思想求解图问题(1-5)
- 第12周项目4-利用遍历思想求解图问题(1-5)
- 第12周项目4 - 利用遍历思想求解图问题(5)
- 第12周项目4利用遍历思想求解图问题5
- 【第12周 项目4 - 利用遍历思想求解图问题(1-5)】
- 第12周项目4 利用遍历思想求解图问题(1--5)
- 第12周上机实践项目4 - 利用遍历思想求解图问题(1-4)
- 第12周项目4 - 利用遍历思想求解图问题(4)
- 第12周 项目4 - 利用遍历思想求解图问题 (6-7)
- 第12周项目4-利用遍历思想求解图问题(6-7)
- 第12周项目4-利用遍历思想求解图问题(6-7)
- 第12周项目4 - 利用遍历思想求解图问题(1)
- 第12周项目4 - 利用遍历思想求解图问题(2)
- 第12周项目4 - 利用遍历思想求解图问题(3)
- 第12周项目4 - 利用遍历思想求解图问题(6)
- 蓝桥杯BASIC-16(分解质因数)
- java动态代理(JDK和cglib)
- 第九周项目4-广义表算法库及应用(1)
- 很不错的 Netty 博客专栏(转载)
- cocos2d学习笔记——基础控件
- 第12周项目4 - 利用遍历思想求解图问题(5)
- 第十六周项目1—直接插入排序 折半插入排序
- 第十六周项目1-验证算法(2)希尔排序
- 第十六周项目二【大数据集上排序算法性能的体验】
- mysql开启innodb引擎
- 使用python进行数据迁移案例
- 第16周 项目1-验证算法(直接选择排序)
- 对javascrip中Array类型的操作方法的理解
- cpp 9.4