数据结构_图的遍历

深度优先搜索遍历

遍历思想

邻接矩阵上的遍历算法


cpp 复制代码
void Map::DFS(int v)
{
    int w, i, k;
    visited[v] = true; // 标记已访问
    cout << v << " ";

    // 找出与v相连接的其他所有顶点,存放在AdjVex数组中
    int* AdjVex = new int[Vexnum]; // 存放连接的顶点编号
    for (i = 0; i < Vexnum; i++)
    {
        AdjVex[i] = -1;
    }

    // k是数组AdjVex的空位置下标,初始化为0表示数组AdjVex一开始没有数据
    k = 0;
    for (i = 0; i < Vexnum; i++)
    {
        // 如果顶点i与v连接
        if (Maxtrix[v][i] == 1)
        {
            AdjVex[k] = i;
            k++;
        }
    }

    i = 0;
    w = AdjVex[i];
    while (w != -1)
    {
        // 如果顶点w未访问
        if (visited[w] == false)
        {
            DFS(w);
        }
        i++;
        w = AdjVex[i];
    }
    delete[] AdjVex;
}

广度优先搜索遍历及其实现

实现


cpp 复制代码
void Map::BFS(Graph G, int v)
{
    int w, u;
    queue<int> Q;
    visited[v] = true; // 访问第v个顶点
    cout << v << " ";  // 输出访问的顶点

    Q.push(v);
    while (!Q.empty())
    {
        u = Q.front();
        Q.pop();
        for (w = FirstAdjVex(G, u); w >= 0; w = NextAdjVex(G, u, w))
        {
            if (!visited[w])
            {
                cout << w << " ";
                visited[w] = true;
                Q.push(w);
            }
        }
    }
}
cpp 复制代码
int Map::FirstAdjVex(Graph& G, int v)
{
    for (int i = 0; i < G.num; i++)
    {
        if (G.arcs[v][i] != 0)
        {
            return i;
        }
    }
    return -1;
}

int Map::NextAdjVex(Graph& G, int v, int w)
{
    for (int i = w + 1; i < G.num; i++)
    {
        if (G.arcs[v][i] != 0)
            return i;
    }
    return -1;
}
相关推荐
Darling噜啦啦2 天前
列表转树算法深度解析:从 Map 到 Reduce 的两种实现,面试高频考点
数据结构·算法·面试
小小工匠3 天前
Redis - 事务机制:能实现 ACID 属性吗
数据结构·redis·性能优化·并发·持久化
玖玥拾3 天前
C/C++ 数据结构(七)栈、容器适配器
c语言·数据结构·c++··容器适配器
Qres8213 天前
算法复键——树状数组
数据结构·算法
牛油果子哥q3 天前
并查集(DSU)超精讲,路径压缩、按秩合并、万能模板、连通性判定、最小生成树与刷题实战全解
数据结构·c++·最小生成树·并查集
凌波粒3 天前
LeetCode--491.递增子序列(回溯算法)
数据结构·算法·leetcode
WL学习笔记3 天前
单项不带头不循环链表
数据结构·链表
小糯米6013 天前
JS 数组
数据结构·算法·排序算法
小欣加油3 天前
leetcode3612 用特殊操作处理字符串I
数据结构·c++·算法·leetcode·职场和发展
凌波粒3 天前
LeetCode--90.子集II(回溯算法)
数据结构·算法·leetcode