【算法】图的深度优先遍历
来源:互联网 发布:java 统计学 mahout 编辑:程序博客网 时间:2024/06/06 04:10
图就是由一些小圆点(称为顶点)和连接这些小圆点的直线(称为变)组成的。
例如,下面的图:
上图就是由五个顶点(编号为1,2,3,4,5)和5条边(1-2,1-3,1-5,2-4,3-5)组成。
对于图的遍历有深度优先搜索来遍历这个图。沿着每一个顶点,向着未走过的顶点走
直到没有顶点继续走下去时,返回上一个节点,继续进行遍历。
代码实现:
#define _CRT_SECURE_NO_DEPRECATE#include<stdio.h>#include<stdlib.h>int arr1[101], sum, n, arr2[101][101];void dfs(int cur){int i;printf("%d ", cur);//打印出深度优先遍历图的每一个点sum++;if (sum == n){return;}for (i = 1; i <= n; i++){if (arr2[cur][i] == 1 && arr1[i] == 0){arr1[i] = 1;dfs(i);}}return;}int main(){int i, j, m, a, b;printf("请输入矩阵的行和列->\n");scanf("%d %d", &n, &m);//定义矩阵的行和列for (i = 1; i <= n; i++){for (j = 1; j <= n; j++){if (i == j){arr2[i][j] = 0;}else{arr2[i][j] = 99999999;}}}printf("请输入无向图的边界->\n");for (i = 1; i <= n; i++){scanf("%d %d", &a, &b);arr2[a][b] = 1;arr2[b][a] = 1;}arr1[1] = 1;printf("深度优先遍历图的结果是:\n");dfs(1);printf("\n");system("pause");return 0;}运行结果:
阅读全文
0 0
- 图的深度优先遍历和广度优先遍历算法
- 图的深度优先遍历算法
- 图的深度优先遍历算法
- 深度优先算法,图的遍历
- 图的深度优先遍历算法
- 图的深度优先遍历算法
- 图的深度优先遍历算法
- 【算法】图的深度优先遍历
- 深度优先算法、广度优先算法 与 图的遍历
- 图的邻接矩阵生成算法,深度优先遍历算法,广度优先遍历算法,Prime算法。):
- 图的遍历之深度优先搜索算法&&广度优先优先算法的实现
- 树的广度优先遍历与深度优先遍历算法
- 图的深度优先遍历算法的实现
- 图的深度优先遍历
- 图的深度优先遍历
- 图的深度优先遍历
- 图的深度优先遍历
- 图的深度优先遍历
- 队列的实现
- 数据结构之链式队列
- android inflater的用法
- oracle存储过程中游标的使用
- 死锁的产生与解决
- 【算法】图的深度优先遍历
- Golang 调试
- 大学里常见的几个问题
- 常用类库API
- fatal: pathspec 'readme.txt' did not match any files
- Hibernate环境搭建与测试
- FFMPEG结构体分析:AVFormatContext
- 三次握手
- LeetCode-100. Same Tree (Java)