输出邻接矩阵中经过指定顶点的所有简单回路

废话不说,放码子:

 

至于输出所有指定顶点间的所有简单路径,代码跟上面神似,就不写了。(只要改动一下输出条件就可以咯)

转载注明出处!

基于邻接矩阵判断图是否有回路,可以使用深度优先搜索算法。下面是一个基于邻接矩阵的C语言函数实现: ```c #define MAX_VERTEX_NUM 100 // 图的最大顶点数 typedef int VertexType; // 顶点类型 typedef int EdgeType; // 边权类型 typedef struct { VertexType vexs[MAX_VERTEX_NUM]; // 顶点数组 EdgeType edges[MAX_VERTEX_NUM][MAX_VERTEX_NUM]; // 邻接矩阵 int n, e; // 顶点数和边数 } MGraph; int visited[MAX_VERTEX_NUM]; // 访问标记数组 // DFS遍历图 int DFS(MGraph *G, int v, int parent) { visited[v] = 1; // 标记当前节点为已访问 int i; for (i = 0; i < G->n; i++) { if (G->edges[v][i] != 0) { // 如果当前节点与节点i之间有边 if (!visited[i]) { // 如果节点i未被访问过 if (DFS(G, i, v)) // 递归遍历节点i return 1; // 如果返回真,则说明存在回路 } else if (i != parent) { // 如果节点i已被访问过且不是当前节点的父节点 return 1; // 说明存在回路 } } } return 0; // 没有找到回路 } // 判断无向图是否有回路 int HasCycle(MGraph *G) { int i; for (i = 0; i < G->n; i++) visited[i] = 0; // 初始化访问标记数组 for (i = 0; i < G->n; i++) { if (!visited[i]) // 如果节点i未被访问过 if (DFS(G, i, -1)) // 从节点i开始遍历 return 1; // 如果返回真,则说明存在回路 } return 0; // 不存在回路 } ``` 其,`DFS`函数用于深度优先遍历图,判断是否存在回路,`HasCycle`函数用于判断无向图是否有回路。函数使用`visited`数组记录每个节点的访问状态,`parent`参数表示当前节点的父节点,用于判断是否存在回路
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值