创建无向图并深度优先搜索
来源:互联网 发布:asp程序 域名绑定授权 编辑:程序博客网 时间:2024/05/16 08:35
/*创建无向图并深度优先搜索 */#include <stdio.h>#include <stdlib.h>#include <math.h>#include <string.h>const int MAXN = 100;typedef struct ArcCell { char vexnum[MAXN]; //顶点 int arcnum[MAXN][MAXN]; //弧 int n, e; //顶点数, 弧数}Graph;int Visit[MAXN] = {0}; //定义Visit来判断顶点是否被访问,并初始化 void CreateGraph(Graph &G) { //创建图 ,此处注意&G int s, t; scanf ("%d %d", &G.n, &G.e); getchar(); for (int i=0; i<G.n; i++) { scanf ("%c", &G.vexnum[i]); } for (int i=0; i<G.n; i++) { //初始化数据 for (int j=0; j<G.n; j++) { G.arcnum[i][j] = 0; } } for (int i=0; i<G.e; i++) { //创建图的邻接矩阵 scanf ("%d %d", &s, &t); G.arcnum[s][t] = 1; G.arcnum[t][s] = 1; }}void DFSTraverse(Graph G, int i) { //对连通分量进行深度搜索 printf ("%c", G.vexnum[i]); for (int j=0; j<G.n; j++) { if (G.arcnum[i][j] && !Visit[j]) { Visit[j] = 1; DFSTraverse(G, j); } }}void DFS(Graph G) { //对整个图进行深度搜索 for (int i=0; i<G.n; i++) { //可联想邻接矩阵和无向图来思考遍历过程 if (!Visit[i]) { Visit[i] = 1; DFSTraverse(G, i); //连通分量 } }}int main(){ Graph G; CreateGraph(G); DFS(G); return 0;}/*输入: 5 6abcde0 10 31 21 42 32 4输出 :abcde 输入: 8 9abcdefgh0 10 21 31 43 74 72 52 65 6 输出:abdhecfg */
阅读全文
0 0
- 创建无向图并深度优先搜索
- 无向图的深度优先搜索
- 无向图的深度优先搜索
- 无向图的深度优先搜索
- 无向图的深度优先搜索
- 无向图的深度优先搜索(最终版)
- 实验4 无向图的深度优先搜索
- 算法: 无向图的深度优先搜索(dfs)和广度优先搜索(bfs)
- java实现无向图的深度优先搜索和广度优先搜索
- 算法#17--无向图的深度优先搜索和广度优先搜索
- 基于邻接矩阵的无向图构造,以及宽度优先、深度优先搜索(Java)
- 有向图 无向图和创建(数组表示法)和深度优先访问
- 无向图的深度优先遍历
- 无向图_深度优先遍历
- Java实现图:邻接矩阵表示、深度优先搜索、广度优先搜索、无向图的最小生成树
- 有向图(2)--深度优先搜索&&广度优先搜索
- 无向图的广度优先搜索
- 图简介2- 邻接表实现无向图+深度/广度优先搜索
- 软件调试笔记2
- 一个人下班后,如何高质量提升自己
- 一分钟AI | 腾讯市值超5000亿美元创亚洲最高!CV杀红脸了:AI国家队云从科技完成25亿B轮融资
- 论一枚数据科学家的自我修养
- 刚毕业就能拿到56万年薪?对!看看Twitter机器学习大牛写给你的进阶手册吧
- 创建无向图并深度优先搜索
- python正则表达式匹配邮箱地址是否合法
- Linux 挂载2T以上存储
- 【Scikit-Learn 中文文档】线性和二次判别分析
- Android:使用LoadingLayout来展示加载数据时不同状态
- 《01.Spring Boot实战:Spring Boot入门篇》
- 匠牛社区AM5728 USB测试
- head first冒泡排序
- 【Scikit-Learn 中文文档】内核岭回归