42. 蛤蟆的数据结构笔记之四十二图的遍历之广度优先

42. 蛤蟆的数据结构笔记之四十二图的遍历之广度优先

本篇名言:“生活真象这杯浓酒 ,不经三番五次的提炼呵 ,
就不会这样一来可口 ! --
郭小川”

继续看下广度优先的遍历,上篇我们看了深度遍历是每次一个节点的链表是走到底的。

欢迎转载,转载请标明出处:http://write.blog.csdn.net/postedit/47029275

1.  原理

首先,从图的某个顶点v0出发,访问了v0之后,依次访问与v0相邻的未被访问的顶点,然后分别从这些顶点出发,广度优先遍历,直至所有的顶点都被访问完。

如上面图1

其广度优先遍历得到的序列为:

0->1->2->3->4->5->6->7

2.  代码实现

具体代码查看40节。

2.1         定义结构

/*队列的链式存储结构*/

typedefstruct
qnode

{

int    data;

struct qnode*next;

}qnode,*queueptr;

typedefstruct

{
queueptr front;

queueptr rear;/*队头、队尾指针*/

}linkqueue;

2.2         bfstraverse

5个顶点为1,2,3,4,5

边连接是 1和2,1和3,2和3,2和4,3和4 连接。

遍历开始从顶点2开始。

同深度遍历,先设置数据为0表示未被查询。

调用initqueue函数置空的队列。

输出节点然后将该节点加入到队列中。

如果队列不为空,得到队列的第一个元素。

具体执行是

U=2,W=4 (4 入队列)

U=2,W=3(3 入队列)

U=2,W=1(1 入队列)

U=4(出队列得到),W=3

U=4,W=2

U=3(出队列得到),W=4

U=3,W=2

U=3,W=1

U=1(出队列得到),W=3

U=1,W=2

结束

2.3         initqueue

构造空队列。

一个队头和创建一个节点。

2.4         enqueue

分配一个节点空间。

加入到队列到尾部中。

2.5         queueempty

判断是否为空队列,空则返回TRUE,否则返回FALSE。

2.6         dequeue

若队列不空,删除q的队头元素,用e返回其值

2.7         firstadjvex

同上节的深度遍历优先。

2.8         nextadjvex

同上节中的深度遍历优先。

3.  源码

查看第40节

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-01 12:02:23

42. 蛤蟆的数据结构笔记之四十二图的遍历之广度优先的相关文章

49. 蛤蟆的数据结构笔记之四十九图的连通性问题

49. 蛤蟆的数据结构笔记之四十九图的连通性问题 本篇名言:"我们不得不饮食.睡眠.游惰.恋爱,也就是说,我们不得不接触生活中最甜蜜的事情:不过我们必须不屈服于这些事物 .....--约里奥?居里"     此篇就作为数据结构入门笔记的最后一篇吧. 欢迎转载,转载请标明出处:http://blog.csdn.net/notbaron/article/details/47135259 设图G=(V,E)是一个无向图,G的一个连通分支是一个最大的连通子图,即一个连通分支是不包含在任何更大的

48. 蛤蟆的数据结构笔记之四十八的有向无环图的应用关键路径

48. 蛤蟆的数据结构笔记之四十八的有向无环图的应用关键路径 本篇名言:"富贵不淫贫贱乐 ,男儿到此是豪雄.-- 程颢" 这次来看下有向无环图的另一个应用关键路径. 欢迎转载,转载请标明出处:http://blog.csdn.net/notbaron/article/details/47135061 1.  关键路径 与AOV-网相对应的是AOE-网(Activity On Edge)即边表示活动的网.AOE-网是一个带权的有向无环图,其中,顶点表示事件(Event),弧表示活动,权表

46. 蛤蟆的数据结构笔记之四十六普里姆算法

46. 蛤蟆的数据结构笔记之四十六普里姆算法 本篇名言:"手莫伸 ,伸手必被捉.党与人民在监督 ,万目睽睽难逃脱.汝言惧捉手不伸 ,他道不伸能自觉 , 其实想伸不敢伸 ,人民咫尺手自缩.-- 陈毅" 连通图的生成树是一个极小的连通子图,它含有图中全部的顶点,但只有足以构成一棵树的n-1条边.所谓的最小成本,就是n个顶点,用n-1条边把一个连通图连接起来,并且使得权值的和最小.构造连通网的最小代价生成树,即最小生成树(Minimum Cost Spanning Tree). 找连通图的最

44. 蛤蟆的数据结构笔记之四十四弗洛伊德Floyd算法

44. 蛤蟆的数据结构笔记之四十四弗洛伊德Floyd算法 本篇名言:"希望是厄运的忠实的姐妹. --普希金" 我们继续来看下数据结构图中的一个算法,这个算法来自图灵奖得主. 1.  Floyd算法介绍 Floyd算法又称为插点法,是一种用于寻找给定的加权图中多源点之间最短路径的算法.该算法名称以创始人之一.1978年图灵奖获得者.斯坦福大学计算机科学系教授罗伯特·弗洛伊德命名.注意这个可不是心理学的那个弗洛伊德. 是解决任意两点间的最短路径的一种算法,可以正确处理有向图或负权的最短路径

45. 蛤蟆的数据结构笔记之四十五克鲁斯卡尔算法

本篇名言:"假如生活欺骗了你 ,不要忧郁 , 也不要愤慨 !不顺心的时候暂且容忍 : 相信吧 , 快乐的日子就会到来.--普希金" 上两篇学习了弗洛伊德和迪杰特斯拉算法.这次来看下克鲁斯卡尔算法. 欢迎转载,转载请标明出处:http://write.blog.csdn.net/postedit/47071539 1.  克鲁斯卡尔算法 克鲁斯卡尔(Kruskal)算法是在剩下的所有未选取的边中,找最小边,如果和已选取的边构成回路,则放弃,选取次小边.是实现图的最小生成树最常用的算法.

34. 蛤蟆的数据结构笔记之三十四树的概念

34. 蛤蟆的数据结构笔记之三十四树的概念 本篇名言:"过去属于死神,未来属于你自己.--雪莱" 本篇笔记开始我们要进入新的概念了,树!是不是有点小激动呢?让我们从概念开始吧 当然概念要理解,如果当前不能立刻理解,可以后续结合代码一起理解效果更佳. 1.  树型结构 之前我们学习的那么多,其实都是线性数据结构. 树 则不同,它是非线性结构. 树形结构指的是数据元素之间存在着"一对多"的树形关系的数据结构,是一类重要的非线性数据结构.在树形结构中,树根结点没有前驱结点

18、蛤蟆的数据结构笔记之十八链表实现稀疏矩阵

18.蛤蟆的数据结构笔记之十八链表实现稀疏矩阵 本篇名言:"必须如蜜蜂一样,采过许多花,才能酿出蜜来." 上篇中实现了栈在多项式实现中的例子,再来看下稀疏矩阵通过链表方式实现. 关键字:十字链表存储 欢迎转载,转载请标明出处: 1.  十字链表存储 十字链表(OrthogonalList)是有向图的另一种链式存储结构.该结构可以看成是将有向图的邻接表和逆邻接表结合起来得到的.用十字链表来存储有向图,可以达到高效的存取效果.同时,代码的可读性也会得到提升. 为便于理解后续代码,从网上摘了

47. 蛤蟆的数据结构笔记之四十七的有向无环图的应用排序

47.蛤蟆的数据结构笔记之四十七的有向无环图的应用排序 本篇名言:"君子喻于义 ,小人喻于利. -- 孔丘" 接下去来看下有向无环图. 欢迎转载,转载请标明出处:http://blog.csdn.net/notbaron/article/details/47110397 1.  有向无环图 一个无环的有向图称做有向无环图(directedacycline praph).简称DAG图.DAG 图是一类较有向树更一般的特殊有向图,图1给出了有向树.DAG图和有向图 有向无环图是描述含有公共

15、蛤蟆的数据结构笔记之十五栈的应用之栈与递归之八皇后问题

15.蛤蟆的数据结构笔记之十五栈的应用之栈与递归之八皇后问题 本篇名言:"人的一生应当这样度过:当回忆往事的时候,他不致于因为虚度年华而痛悔,也不致于因为过去的碌碌无为而羞愧:在临死的时候,他能够说:"我的整个生命和全部精力,都已经献给世界上最壮丽的事业--为人类的解放而斗争." 继续递归问题,本次是经典的八皇后问题: 欢迎转载,转载请标明出处: 1.  八皇后问题 八皇后问题,是一个古老而著名的问题,是回溯算法的典型案例.该问题是国际西洋棋棋手马克斯·贝瑟尔于1848年提出