博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
邻接表 有向图 是否有环 C实现 (dfs - 反向边)
阅读量:4217 次
发布时间:2019-05-26

本文共 854 字,大约阅读时间需要 2 分钟。

邻接矩阵 方法 类似 

利用某个节点的三种状态 判断是否有反向边  有 ? 有环:无环

#define gray -1#define white 0#define black 1bool is_dag = true;//初始为有向无环图

图的顶点与边定义:
typedef struct ENode {	int ivex;//顶点 索引	struct ENode* next;}ENode;typedef struct VNode {	VertexType data; // 顶点 信息	ENode* first_edge;}VNode;typedef struct Graph {	VNode vex[MAXVEX];	int vex_num, edge_num;}Graph;
核心代码 :
void dfs(Graph g, int i){	ENode* p;	color[i] = gray;	p = g.vex[i].first_edge;	while (p != NULL) {		if (color[p->ivex] == white) {			dfs(g, p->ivex);		}		else if(color[p->ivex] == gray){			is_dag = false;		}		p = p->next;	}	color[i] = black;}int has_circle(Graph g)//判断图中是否有环 {	int i;	ENode* p;	for (i = 0; i < g.vex_num; i++) {		color[i] = white;	}	//loop_num = 0;	for (i = 0; i < g.vex_num; i++) {		if (color[i] == white) {			dfs(g, i);			//loop_num++; (统计环数量)		}	}	if (!is_dag)		return 1;	else		return 0;}

转载地址:http://kximi.baihongyu.com/

你可能感兴趣的文章
Web前端学习笔记——AngularJS之TodoMVC案例
查看>>
Web前端学习笔记——AngularJS之豆瓣电影案例
查看>>
Web前端学习笔记——模块化开发
查看>>
Web前端学习笔记——VueJS基础
查看>>
Web前端学习笔记——VueJS之过滤器、生命周期、请求、动画
查看>>
Web前端学习笔记——VueJS之组件、路由
查看>>
Web前端学习笔记——HTML基础
查看>>
Web前端学习笔记——CSS基础、选择器
查看>>
Web前端学习笔记——Webpack
查看>>
Web前端学习笔记——CSS样式、外观、复合选择器
查看>>
Web前端学习笔记——CSS显示模式、特性、背景
查看>>
Web前端学习笔记——CSS盒子模型、浮动
查看>>
Web前端学习笔记——CSS版心和布局流程、清除浮动
查看>>
Web前端学习笔记——CSS之Photoshop切图
查看>>
Web前端学习笔记——CSS定位、高级技巧、文字溢出、精灵图、Web字体
查看>>
Web前端学习笔记——CSS京东案例、BFC
查看>>
Web前端学习笔记——HTML5新标签与特性
查看>>
Web前端学习笔记——CSS3 新增选择器
查看>>
Web前端学习笔记——Webpack结合VueJS使用、Mint-UI、MUI
查看>>
Web前端学习笔记——VueJS-APP案例
查看>>