栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

图 广度优先遍历

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

图 广度优先遍历

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

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

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/875865.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号