图的遍历(C语言,邻接表存储的图 - DFS,邻接矩阵存储的图 - BFS)
邻接表存储的图 - DFS
/* 邻接表存储的图 - DFS */void Visit( Vertex V )
{printf("正在访问顶点%d\n", V);
}/* Visited[]为全局变量,已经初始化为false */
void DFS( LGraph Graph, Vertex V, void (*Visit)(Vertex) )
{ /* 以V为出发点对邻接表存储的图Graph进行DFS搜索 */PtrToAdjVNode W;Visit( V ); /* 访问第V个顶点 */Visited[V] = true; /* 标记V已访问 */for( W=Graph->G[V].FirstEdge; W; W=W->Next ) /* 对V的每个邻接点W->AdjV */if ( !Visited[W->AdjV] ) /* 若W->AdjV未被访问 */DFS( Graph, W->AdjV, Visit ); /* 则递归访问之 */
}
邻接矩阵存储的图 - BFS:
/* 邻接矩阵存储的图 - BFS *//* IsEdge(Graph, V, W)检查<V, W>是否图Graph中的一条边,即W是否V的邻接点。 */
/* 此函数根据图的不同类型要做不同的实现,关键取决于对不存在的边的表示方法。*/
/* 例如对有权图, 如果不存在的边被初始化为INFINITY, 则函数实现如下: */
bool IsEdge( MGraph Graph, Vertex V, Vertex W )
{return Graph->G[V][W]<INFINITY ? true : false;
}/* Visited[]为全局变量,已经初始化为false */
void BFS ( MGraph Graph, Vertex S, void (*Visit)(Vertex) )
{ /* 以S为出发点对邻接矩阵存储的图Graph进行BFS搜索 */Queue Q; Vertex V, W;Q = CreateQueue( MaxSize ); /* 创建空队列, MaxSize为外部定义的常数 *//* 访问顶点S:此处可根据具体访问需要改写 */Visit( S );Visited[S] = true; /* 标记S已访问 */AddQ(Q, S); /* S入队列 */while ( !IsEmpty(Q) ) {V = DeleteQ(Q); /* 弹出V */for( W=0; W<Graph->Nv; W++ ) /* 对图中的每个顶点W *//* 若W是V的邻接点并且未访问过 */if ( !Visited[W] && IsEdge(Graph, V, W) ) {/* 访问顶点W */Visit( W );Visited[W] = true; /* 标记W已访问 */AddQ(Q, W); /* W入队列 */}} /* while结束*/
}
图的遍历(C语言,邻接表存储的图 - DFS,邻接矩阵存储的图 - BFS)相关推荐
- 用邻接表存储图c语言,邻接表、邻接多重表、十字链表及C语言实现
上一节介绍了如何使用顺序存储结构存储邻接多重表和 邻接的意思是顶点之间有边或者弧存在,通过当前顶点,可以直接找到下一个顶点. 邻接表 使用邻接表存储图时,对于图中的每一个顶点和它相关的邻接点,都存储到 ...
- c语言邻接表做公园导游系统,公园导游管理系统
<公园导游管理系统>由会员分享,可在线阅读,更多相关<公园导游管理系统(32页珍藏版)>请在人人文库网上搜索. 1.计算机信息工程学院数据结构课程设计报告题 目公园导游系统专 ...
- C语言邻接表表示法创建无向图并输出
C语言邻接表表示法创建无向图并输出 邻接表是图的一种链式存储结构,对图的每个顶点建立一个单链表,单链表第一个结点存放顶点信息,其余存放有关边信息. 邻接表由表头结点表和边表组成. 邻接表存储结构 #i ...
- c语言邻接表的构建_c语言数据结构--图的邻接矩阵和邻接表操作的基本操作
#include #include #include #define MAX 100 typedef char DataType; typedef int VectorRelationType; ty ...
- c语言邻接表,C++数据结构之实现邻接表
本文实例为大家分享了C++数据结构之实现邻接表的具体代码,供大家参考,具体内容如下 一.图的邻接表实现 1.实现了以顶点顺序表.边链表为存储结构的邻接表: 2.实现了图的创建(有向/无向/图/网).边 ...
- 数据结构——图-有向图和无向图的邻接表基础
#include <stdio.h> #include <stdlib.h> #define VertexType char //顶点的数据类型(char) #define V ...
- 从小白开始自学数据结构——第十二天【图及其基本概念和邻接表的定义】
图的定义图是由顶点的有穷非空集合和顶点之间的边的集合组成,通常表示为:G(V,E).其中G表示一个图,V是图G中顶点的集合,E是图G中边的集合.图的基本概念:顶点:图的数据元素(就像线性表中的元素,树 ...
- 邻接表:构造只有顶点没有边的图
文章目录 问题描述 : 输入说明 : 输出说明 : 输入范例 : 输出范例 : 基本知识 实现伪码 思路分析 实现伪码 析构函数 构造函数 事故现场 提交了三次 分析与总结 如有不妥或者疑问,请留言或 ...
- 图(一)之邻接表Adjacency List
开始攻克图的算法,先从最简单的存储开始实现,本文关于邻接表的实现. 邻接表是图的存储中最简单也是最基本的存储结构,基于链表的思想实现的.在邻接表中,对于中的每个顶点建立一个单链表,第i个单链表中的节点 ...
最新文章
- 关于arcgis发布wfs问题
- Python-GUI PyQT5案例:注册界面窗体设计(含扇形菜单)
- Spring Data对Cassandra 3的支持
- linux dialog 源码,Linux dialog详解(图形化shell)
- 缓存和数据库一致性问题,看这篇就够了
- ASP技巧:在Access数据库中重命名表
- 百分点零售行业大数据解决方案
- 制打印如下所示的n行数字金字塔_关于央行数字货币的技术猜测
- nginx之206异常
- 求相似三角形的几种方法,相似三角形 计算公式
- Face Recognition 人脸识别该如何测试
- 51单片机 之 8*8 LED点阵(解决程序烧录没反应、显示拖影问题、取字模软件)
- 总方差公式(方差分解公式)证明
- python 读取txt文件并在txt每行文件后面增加内容
- mysql执行计划详解
- 【洛谷】P1428 小鱼比可爱
- 一步步教你轻松学关联规则Apriori算法
- EXCEL2016设置下拉选项,图文说明
- Mysql数据丢失分析与数据恢复
- 同构和异构关系图-行人re_ID