无向图 深度优先遍历 c语言实现
来源:互联网 发布:4钻淘宝店出售多少钱 编辑:程序博客网 时间:2024/05/22 16:06
无向图的深度优先遍历的实现,无向图用邻接表表示无向图的表示:邻接矩阵和邻接表。
程序使用的示例图为:
实现要点:
每个节点有三种状态:
-1,还未发现
0,已经发现了,正在处理,还没有处理完
1,已经处理完了
为防止循环调用dfs,只有在节点是-1状态时才调用dfs函数
代码如下:
#include <stdio.h>#include <stdlib.h>#include "graph_represent.h"//后序遍历图void DFS(struct vNode** adj,int v,int* color){ struct vNode* w; color[v] = 0; printf("%d ",v);/**在这里前序处理节点**/ w = adj[v]; while(w != NULL){ if(color[w->value]==-1){ DFS(adj,w->value,color); } w = w->next; } /**这里后序处理节点**/ color[v] = 1;}//参数:邻接表,节点个数,开始节点,void dfs_wraper(struct vNode** adj,int n,int s){ int* color = (int*)malloc(sizeof(int)*n); int i; for(i=0;i<n;i++){ color[i] = -1; //将所有的顶点设置为未发现状态。 } DFS(adj,s,color); /*假设图是连通的,不连通时,调用下面代码即可 for(i=0;i<n;i++) DFS(adj,i,color); */ printf("\n");}void main(){ //获得默认图,一共有7个节点 int n = 7; struct vNode** adjVertics = default_wraper(); printf("\ndeepth first search:\n"); dfs_wraper(adjVertics,n,2); //从2开始遍历}
这里从2开始深度遍历,结果为:2 0 1 3 5 4 6
0 0
- 无向图 深度优先遍历 c语言实现
- 无向图 广度优先遍历 c语言实现
- 无向图的深度优先遍历
- 无向图_深度优先遍历
- 无向图深度优先遍历和广度优先遍历
- c语言编程 输出一个无向图的邻接表,邻接矩阵,进行深度和广度优先遍历
- 图的深度优先遍历-C语言实现
- 无向图的深度和广度优先搜索遍历(C)
- 无向图的构建及深度优先遍历---邻接矩阵实现
- 无向图的构建及深度优先遍历---邻接表实现
- 对无向图的深度优先遍历的理解
- 无向图邻接表的深度优先遍历(DFS)
- 无向图的邻接矩阵 -- DFS - 深度优先遍历
- 数据结构无向图的深度优先遍历
- 无向图邻接矩阵的储存和深度优先遍历
- 无向图邻接表的深度优先遍历
- 无向图的深度和广度优先遍历(javascript)
- 无向图的深度和广度优先遍历
- 压缩文件gzip zcat
- android配置
- Axure实现淡入淡出效果,axure实现淡入淡出
- Java编程思想_笔记(四)
- 图片添加
- 无向图 深度优先遍历 c语言实现
- CentOS7安装Oracle 12C
- make s3c2410_defconfig分析
- leetcode:Merge Sorted Array 5行代码AC
- hadoop之hive部署
- Android最佳性能实践(一)——合理管理内存
- 26.按规定打印矩阵
- 8K 视频 采集、压缩编码、传输、显示系统总结
- WDK 8.1 Sample - Hardware Event Sample 学习总结