标签:
42. 蛤蟆的数据结构笔记之四十二图的遍历之广度优先
本篇名言:“生活真象这杯浓酒 ,不经三番五次的提炼呵 , 就不会这样一来可口 ! -- 郭小川”
继续看下广度优先的遍历,上篇我们看了深度遍历是每次一个节点的链表是走到底的。
欢迎转载,转载请标明出处:http://write.blog.csdn.net/postedit/47029275
首先,从图的某个顶点v0出发,访问了v0之后,依次访问与v0相邻的未被访问的顶点,然后分别从这些顶点出发,广度优先遍历,直至所有的顶点都被访问完。
如上面图1
其广度优先遍历得到的序列为:
0->1->2->3->4->5->6->7
具体代码查看40节。
/*队列的链式存储结构*/
typedefstruct qnode
{
int data;
struct qnode*next;
}qnode,*queueptr;
typedefstruct
{ queueptr front;
queueptr rear;/*队头、队尾指针*/
}linkqueue;
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
结束
构造空队列。
一个队头和创建一个节点。
分配一个节点空间。
加入到队列到尾部中。
判断是否为空队列,空则返回TRUE,否则返回FALSE。
若队列不空,删除q的队头元素,用e返回其值
同上节的深度遍历优先。
同上节中的深度遍历优先。
查看第40节
版权声明:本文为博主原创文章,未经博主允许不得转载。
标签:
原文地址:http://blog.csdn.net/notbaron/article/details/47029275