算法学习 之遍历

/********************广度优先遍历算法*******************/

void BFSTraverse(Graph G, Status (*Visit)(int v))
 {  // 按广度优先非递归遍历图G。使用辅助队列Q和访问标志数组visited。
for (v=0; v<G.vexnum; ++v)   visited[v] = FALSE;
InitQueue(Q);     // 置空的辅助队列Q
for ( v=0; v<G.vexnum; ++v )
if (!visited[v])
{  EnQueue(Q, v);                   //入队
visited[u] = TRUE;   Visit(u);    //访问
while (!QueueEmpty(Q))
{  DeQueue(Q, u);              //出队
for ( w=FirstAdjVex(G, u); w!=0; w=NextAdjVex(G, u, w) )
if ( ! visited[w]) 
{  visited[u] = TRUE;   Visit(u);   //访问
EnQueue(Q, w);               //入队
}
}  //while
}  //if
} // BFSTraverse 
// FirstAdjVex(G, u)寻找u的第一个邻接点,并返回其下标位置
// NextAdjVex(G, u, w) w是u的一个邻接点,寻找u的所有邻接点中位于w后面的那一个,并返回其下标位置
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值