邻接表存储的图 - 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)相关推荐

  1. 用邻接表存储图c语言,邻接表、邻接多重表、十字链表及C语言实现

    上一节介绍了如何使用顺序存储结构存储邻接多重表和 邻接的意思是顶点之间有边或者弧存在,通过当前顶点,可以直接找到下一个顶点. 邻接表 使用邻接表存储图时,对于图中的每一个顶点和它相关的邻接点,都存储到 ...

  2. c语言邻接表做公园导游系统,公园导游管理系统

    <公园导游管理系统>由会员分享,可在线阅读,更多相关<公园导游管理系统(32页珍藏版)>请在人人文库网上搜索. 1.计算机信息工程学院数据结构课程设计报告题 目公园导游系统专 ...

  3. C语言邻接表表示法创建无向图并输出

    C语言邻接表表示法创建无向图并输出 邻接表是图的一种链式存储结构,对图的每个顶点建立一个单链表,单链表第一个结点存放顶点信息,其余存放有关边信息. 邻接表由表头结点表和边表组成. 邻接表存储结构 #i ...

  4. c语言邻接表的构建_c语言数据结构--图的邻接矩阵和邻接表操作的基本操作

    #include #include #include #define MAX 100 typedef char DataType; typedef int VectorRelationType; ty ...

  5. c语言邻接表,C++数据结构之实现邻接表

    本文实例为大家分享了C++数据结构之实现邻接表的具体代码,供大家参考,具体内容如下 一.图的邻接表实现 1.实现了以顶点顺序表.边链表为存储结构的邻接表: 2.实现了图的创建(有向/无向/图/网).边 ...

  6. 数据结构——图-有向图和无向图的邻接表基础

    #include <stdio.h> #include <stdlib.h> #define VertexType char //顶点的数据类型(char) #define V ...

  7. 从小白开始自学数据结构——第十二天【图及其基本概念和邻接表的定义】

    图的定义图是由顶点的有穷非空集合和顶点之间的边的集合组成,通常表示为:G(V,E).其中G表示一个图,V是图G中顶点的集合,E是图G中边的集合.图的基本概念:顶点:图的数据元素(就像线性表中的元素,树 ...

  8. 邻接表:构造只有顶点没有边的图

    文章目录 问题描述 : 输入说明 : 输出说明 : 输入范例 : 输出范例 : 基本知识 实现伪码 思路分析 实现伪码 析构函数 构造函数 事故现场 提交了三次 分析与总结 如有不妥或者疑问,请留言或 ...

  9. 图(一)之邻接表Adjacency List

    开始攻克图的算法,先从最简单的存储开始实现,本文关于邻接表的实现. 邻接表是图的存储中最简单也是最基本的存储结构,基于链表的思想实现的.在邻接表中,对于中的每个顶点建立一个单链表,第i个单链表中的节点 ...

最新文章

  1. 关于arcgis发布wfs问题
  2. Python-GUI PyQT5案例:注册界面窗体设计(含扇形菜单)
  3. Spring Data对Cassandra 3的支持
  4. linux dialog 源码,Linux dialog详解(图形化shell)
  5. 缓存和数据库一致性问题,看这篇就够了
  6. ASP技巧:在Access数据库中重命名表
  7. 百分点零售行业大数据解决方案
  8. 制打印如下所示的n行数字金字塔_关于央行数字货币的技术猜测
  9. nginx之206异常
  10. 求相似三角形的几种方法,相似三角形 计算公式
  11. Face Recognition 人脸识别该如何测试
  12. 51单片机 之 8*8 LED点阵(解决程序烧录没反应、显示拖影问题、取字模软件)
  13. 总方差公式(方差分解公式)证明
  14. python 读取txt文件并在txt每行文件后面增加内容
  15. mysql执行计划详解
  16. 【洛谷】P1428 小鱼比可爱
  17. 一步步教你轻松学关联规则Apriori算法
  18. EXCEL2016设置下拉选项,图文说明
  19. Mysql数据丢失分析与数据恢复
  20. 同构和异构关系图-行人re_ID

热门文章

  1. [转]我们为什么要用vue,他解决了什么问题,如何使用它?
  2. Win8消费者预览版下载地址 包含中文下载地址及中文手册
  3. 【数据库原理及应用】经典题库附答案(14章全)——第四章:关系系统及其优化
  4. C语言试题七十六之请编写函实现百钱买百鸡
  5. 【C语言简单说】七:自定义函数(3)
  6. 高速旋转中隐藏着许多鲜为人知的秘密,这些你都知道吗?
  7. 静止的人如何看待高速运动的球?
  8. 竟然能从一维空间变换为四维空间!?
  9. 和套套一样,一次性橡胶手套制作现场, 这鬼畜的画风
  10. 朋友圈有趣的灵魂都去哪了?这几个优质公号给你答案