当前位置:首页 C++内部资料 > 正文

【内部资料】c++用vector模拟存储无向无权图

作者:野牛程序员:2023-09-20 09:03:03 C++内部资料阅读 2514

c++用vector模拟存储无向无权图


#include <iostream>
#include <cstdlib>
#include <vector>

const int MAXN = 1010; // 定义最大节点数

std::vector<int> G[MAXN]; // 创建一个数组 G,每个元素是一个整数向量,表示图的邻接列表

void addEdge(int u, int v) {
    G[u].push_back(v); // 向节点 u 的邻接列表中添加节点 v
    G[v].push_back(u); // 向节点 v 的邻接列表中添加节点 u,因为这是无向图
}

void visitList(int u) {
    for (size_t i = 0; i < G[u].size(); i++) {
        std::cout << G[u][i] << " "; // 输出节点 u 的邻接节点
    }
    std::cout << std::endl; // 输出换行,表示邻接节点列表结束
}

int main() {
    addEdge(1, 2); // 添加边 (1, 2)
    addEdge(1, 3); // 添加边 (1, 3)
    addEdge(1, 4); // 添加边 (1, 4)
    addEdge(1, 5); // 添加边 (1, 5)
    addEdge(2, 3); // 添加边 (2, 3)
    addEdge(2, 5); // 添加边 (2, 5)

    visitList(1); // 访问节点 1 的邻接节点并输出
    std::cout << std::endl; // 输出换行
    visitList(2); // 访问节点 2 的邻接节点并输出

    return 0;
}

G[u].push_back(v) 是C++中用于向标准库容器(在这里是std::vector)添加元素的语法。它的功能和语法:

  1. G 是一个名为G的数组,其中每个元素都是std::vector<int>类型的容器。这是一个数组,每个元素都可以存储一个整数向量(一组整数)。

  2. G[u] 表示访问数组G中索引为u的元素。这个元素是一个std::vector<int>类型的容器,它用于存储节点u的邻接节点。

  3. push_back(v)std::vector容器的成员函数,它用于将一个新元素(这里是整数v)添加到容器的末尾。在这个上下文中,v 是节点u的一个邻接节点,所以通过push_back,将节点v添加到节点u的邻接列表中。

总之,G[u].push_back(v) 的功能是将节点v添加到节点u的邻接节点列表中,用于表示图的边。这是一种常用的方法,用于构建图数据结构。


野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892
野牛程序员教少儿编程与信息学竞赛-微信|电话:15892516892
相关推荐

最新推荐

热门点击