首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

利用邻接表实现无向图C++

邻接表是一种常用的数据结构,用于表示图的连接关系。在无向图中,每个顶点都与其相邻的顶点建立连接。下面是利用邻接表实现无向图的C++代码示例:

代码语言:cpp
复制
#include <iostream>
#include <vector>

using namespace std;

// 无向图的邻接表表示
class Graph {
private:
    int numVertices; // 图中顶点的数量
    vector<vector<int>> adjList; // 邻接表

public:
    // 构造函数
    Graph(int vertices) {
        numVertices = vertices;
        adjList.resize(numVertices);
    }

    // 添加边
    void addEdge(int src, int dest) {
        adjList[src].push_back(dest);
        adjList[dest].push_back(src);
    }

    // 打印图的邻接表
    void printGraph() {
        for (int i = 0; i < numVertices; i++) {
            cout << "顶点 " << i << " 的邻接顶点有:";
            for (int j = 0; j < adjList[i].size(); j++) {
                cout << adjList[i][j] << " ";
            }
            cout << endl;
        }
    }
};

int main() {
    // 创建一个包含5个顶点的无向图
    Graph graph(5);

    // 添加边
    graph.addEdge(0, 1);
    graph.addEdge(0, 4);
    graph.addEdge(1, 2);
    graph.addEdge(1, 3);
    graph.addEdge(1, 4);
    graph.addEdge(2, 3);
    graph.addEdge(3, 4);

    // 打印图的邻接表
    graph.printGraph();

    return 0;
}

这段代码实现了一个无向图的邻接表表示,并提供了添加边和打印邻接表的功能。通过创建一个Graph对象,可以添加边来构建图,并使用printGraph()函数打印图的邻接表。

无向图的邻接表表示优势在于:

  1. 节省空间:相比邻接矩阵,邻接表只存储实际存在的边,节省了空间。
  2. 方便遍历:邻接表中每个顶点的邻接顶点都以链表的形式存储,便于遍历和查找。

邻接表适用于以下场景:

  1. 图中顶点的数量较大,但边的数量较少的情况。
  2. 需要频繁地遍历图的邻接顶点。

腾讯云提供了云计算相关的产品和服务,其中与图计算相关的产品是腾讯云图数据库 Neptune,它是一种高性能、高可靠、全托管的图数据库服务。您可以通过以下链接了解更多关于腾讯云 Neptune 的信息:

腾讯云 Neptune 产品介绍

希望这个答案能够满足您的需求。如果您还有其他问题,请随时提问。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

没有搜到相关的视频

领券