21xrx.com
2024-11-05 19:39:18 Tuesday
登录
文章检索 我的文章 写文章
C++实现图的邻接矩阵表示
2023-07-12 15:39:57 深夜i     --     --
C++ 邻接矩阵 表示

对于图结构的数据表示方式,除了常用的邻接表以外,还有邻接矩阵这一种方式。邻接矩阵通常用二维数组来表示。

邻接矩阵的定义:一个图的邻接矩阵是一个方阵,其大小为N*N,其中N为顶点数,如果顶点i到顶点j之间有边,则在矩阵中第i行第j列的位置上标记为1,否则标记为0。

在C++中,可以使用二维数组来实现邻接矩阵表示方式。具体实现过程如下:

1. 定义一个二维数组存储邻接矩阵,数组大小为N*N。


const int N = 100; // 最大顶点数

int matrix[N][N]; // 存储邻接矩阵

2. 初始化邻接矩阵,将所有位置初始化为0。


for (int i = 0; i < N; i++) {

  for (int j = 0; j < N; j++) {

    matrix[i][j] = 0; // 初始化为0

  }

}

3. 添加边操作,通过修改矩阵中相应的位置来表示添加边。


void addEdge(int u, int v) { // 添加从u到v的边

  matrix[u][v] = 1;

  matrix[v][u] = 1; // 无向图需要将两个位置都修改

}

4. 查询边操作,通过查询相应位置的值来判断是否连通。


bool hasEdge(int u, int v) { // 查询从u到v是否有边

  return matrix[u][v] == 1;

}

邻接矩阵实现方式虽然比邻接表方式在空间利用率方面低,但是其在查询两节点之间是否连通等操作上相对于邻接表要更快。选择使用哪一种方式,需要根据实际情况进行权衡。

总结而言,C++实现图的邻接矩阵表示需要定义一个二维数组来存储矩阵,并提供添加边和查询边的函数。这种方式对于需要频繁查询两节点间是否连通的场合具有较高的性能。

  
  

评论区

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