21xrx.com
2024-09-19 09:32:14 Thursday
登录
文章检索 我的文章 写文章
如何用C++建立一个无向图的邻接矩阵?
2023-06-25 01:49:35 深夜i     --     --
C++ 无向图 邻接矩阵 建立

无向图是一种图形结构,其中没有定向的边连接两个顶点。建立无向图的邻接矩阵是一个重要的算法问题,对于C++程序员而言十分关键。下面将介绍如何使用C++语言建立一个无向图的邻接矩阵。

1. 定义图的基本信息

在建立邻接矩阵之前,需要先确定要建立的无向图的基本信息,包括图的顶点数和边数。在C++中,可以使用变量或从用户输入来定义这些信息。

2. 创建邻接矩阵

一旦确定了图的基本信息,就可以创建一个邻接矩阵。邻接矩阵是一个二维数组,其中第i行第j列表示节点i和节点j之间是否存在一条边。如果节点i和节点j之间存在一条边,则对应的矩阵元素为1;如果不存在,则为0。

3. 实现建立邻接矩阵的算法

可以使用一个简单的算法来建立无向图的邻接矩阵。首先,需要创建一个空的邻接矩阵,其中所有的元素都设置为0。然后,循环读取所有的边,对矩阵中对应的元素设置为1。由于是无向图,需要同时设置邻接矩阵中对称的两个元素。

以下是使用C++语言实现建立无向图邻接矩阵的示例代码:


#include<iostream>

using namespace std;

int main()

{

  int vertexCount, edgeCount;

  cout << "请输入图的顶点数和边数:" << endl;

  cin >> vertexCount >> edgeCount;

  // 创建邻接矩阵并初始化为0

  int** adjacencyMatrix = new int*[vertexCount];

  for(int i = 0; i < vertexCount; i++)

  {

    adjacencyMatrix[i] = new int[vertexCount];

    for(int j = 0; j < vertexCount; j++)

    {

      adjacencyMatrix[i][j] = 0;

    }

  }

  // 读取所有的边并设置邻接矩阵元素

  int fromVertex, toVertex;

  for(int i = 0; i < edgeCount; i++)

  {

    cout << "请输入边的起点和终点:" << endl;

    cin >> fromVertex >> toVertex;

    

    // 设置邻接矩阵中对称的两个元素

    adjacencyMatrix[fromVertex][toVertex] = 1;

    adjacencyMatrix[toVertex][fromVertex] = 1;

  }

  // 打印邻接矩阵

  cout << "无向图的邻接矩阵:" << endl;

  for(int i = 0; i < vertexCount; i++)

  {

    for(int j = 0; j < vertexCount; j++)

    {

      cout << adjacencyMatrix[i][j] << " ";

    }

    cout << endl;

  }

  return 0;

}

该代码读取用户输入的图的顶点数和边数,然后创建一个空的邻接矩阵,并读取所有的边。最后,输出完整的邻接矩阵。通过使用这个简单的算法,可以轻松地创建一个无向图的邻接矩阵,进而方便地进行求解和分析。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复