图 广度优先遍历

图 广度优先遍历,第1张

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 邻接存储图的广度优先遍历

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

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

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/915025.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-16
下一篇2022-05-16

发表评论

登录后才能评论

评论列表(0条)

    保存