数据结构_图的遍历

深度优先搜索遍历

遍历思想

邻接矩阵上的遍历算法


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;
}
相关推荐
椰椰燕麦奶6 分钟前
【HOT100第四天】除自身以外数组的乘积,矩阵置零,螺旋矩阵,旋转图像
数据结构·算法·leetcode
web Rookie3 小时前
ES6 Set和Map数据结构用法详解
javascript·数据结构·es6
一只大侠3 小时前
牛客周赛第一题2024/11/17日
数据结构·算法
Lemon_man_5 小时前
算法——反转链表(leetcode206)
数据结构·算法·链表
刘艳兵的学习博客10 小时前
刘艳兵-DBA037-在ASM实例中,如下哪个参数是必须的?
数据结构·数据库·oracle·database·刘艳兵
smileNicky11 小时前
Redis系列之底层数据结构ZipList
数据结构·数据库·redis
卡戎-caryon12 小时前
【数据结构】11.哈夫曼树&&哈夫曼编码
数据结构·笔记·算法
姜太公钓鲸23313 小时前
列表(list)
数据结构·list
棋子入局15 小时前
移除元素(leetcode 27)
数据结构·算法·leetcode