图 广度优先遍历

int Q[20];
int front = -1;
int rear = -1;
void push(int x)
{
    Q[++rear] = x;
}
int pop ()//出队且释放
{
    return Q[++front];
}
//首先放一个元素 然后把那个元素的所有的邻接也放进去 然后出队首 再放进去队首的所有元素
//每个元素只能放队列一次 需要标记
void BFS ( LGraph Graph, Vertex S, void (*Visit)(Vertex) )
{
    push(S);
    Visited[S] = true;
    while (rear!=front)
    {
        int u = pop();//取出来后 需要把这个结点的邻接点再放进来 也就是邻接表里面的元素了
        Visit(u);
        //找这个遍历方法 搞了好久 应该是链表学的不太好吧 这里指来指去的 烦死了
        for (PtrToAdjVNode W =  Graph->G[u].FirstEdge;W;W=W->Next)//怎么遍历元素
        {
            if (!Visited[W->AdjV])//可以访问
            {
                push(W->AdjV);
                Visited[W->AdjV] = true;
            }
        }
    }
    
}

PTA 邻接存储图的广度优先遍历

就是队列的实现 有模板练习

关键就是那个怎么遍历本链表的所有元素,这里有点卡,其他的就很简单了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值