码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2015-07-23 23:57:15      阅读:373      评论:0      收藏:0      [点我收藏+]

标签:

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节

 

 

 

 

 

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

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

标签:

原文地址:http://blog.csdn.net/notbaron/article/details/47029275

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!