
C++邻接矩阵存储图的深度优先搜索
发布日期:2021-05-07 22:04:57
浏览次数:16
分类:精选文章
本文共 1040 字,大约阅读时间需要 3 分钟。
1. 在数据结构中对于图的存储主要有三种方式,分别为邻接矩阵,邻接表和边集,前两种比较常用,下面使用的是C++语言邻接矩阵来存储图并实现深度优先搜索遍历
2. 下面是具体的执行过程:
① 对于深度优先遍历邻接矩阵存储的图来说比较简单,只需要使用一个标记数组来标记当前的顶点是否已经被访问即可,从图的一个顶点开始寻找邻接点,也就是当前顶点与其他存在联系的顶点,每访问过一个顶点那么标记顶点已被访问
② 找到当前邻接点之后那么又从当前的邻接点出发继续寻找与当前的邻接点有关系的点,最终dfs搜索结束那么图中所有的顶点都已经被访问过了
图的例子如下:
测试数据如下:
670 1 10 2 20 3 41 2 52 4 92 5 64 5 2
3. 下面是具体的代码:
#include#include #include #include #define maxSize 100#define INF 100000using namespace std;bool vis[maxSize] = {false}; int n, edges, G[maxSize][maxSize];void dfs(int u){ vis[u] = true; cout << u << " "; for(int v = 0; v < n; v++){ if(vis[v] == false && G[u][v] != INF){ dfs(v); } }}int main(void){ cout << "输入图中的顶点数: "; cin >> n; fill (G[0], G[0] + maxSize * maxSize, INF); cout << endl; cout << "输入图中的边数: "; cin >> edges; cout << endl << "输入图中的起始顶点, 结束顶点和边的权重: " << endl; int u = -1, v = -1, weight = -1; for(int i = 0; i < edges; i++){ cin >> u >> v >> weight; G[u][v] = weight; } for(int i = 0; i < n; i++){ if(vis[i] == false){ dfs(0); } } return 0;}
发表评论
最新留言
感谢大佬
[***.8.128.20]2025年03月21日 01时41分02秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
1035 Password (20分)
2021-05-08
Unity2D Fixed Joint 2D详解
2021-05-08
Unity Shader之路(五)创建第一个顶点/片元着色器?
2021-05-08
L3-008 喊山 (30分) C++ BFS题解
2021-05-08
Web框架——Flask系列之Flask-SQLAlchemy数据库的基本操作(九)
2021-05-08
LeetCode 每日一题 766. 托普利茨矩阵
2021-05-08
LeetCode 每日一题 131. 分割回文串 dfs
2021-05-08
六、Numpy的使用(详解)
2021-05-08
python爬虫——代理IP
2021-05-08
二、bootstrap4基础(flex布局)
2021-05-08
三、案例:留言板 & url.parse()
2021-05-08
Python3中的map()函数!!!
2021-05-08
Python中的filter()函数!!!1
2021-05-08
(新手小白必学!)用Python设计和实现聪明的尼姆游戏(人机对战)!!!!
2021-05-08
LeetCode:283. 移动零!!!1
2021-05-08
Python实验26:计算文件MD5值
2021-05-08
端口探测
2021-05-08
LeetCode:28. 实现 strStr()——————简单
2021-05-08
java 中 private default protected public 范围
2021-05-08
LeetCode:697. 数组的度————简单
2021-05-08