如何用C++代码实现邻接矩阵表示的无向图和有向图,并展示它们的构建过程?
时间: 2024-11-24 15:30:02 浏览: 38
在学习图的表示方法时,邻接矩阵是一个不可或缺的概念。对于C++初学者来说,掌握如何构建邻接矩阵来表示无向图和有向图是非常重要的。这里,我们以《C++实现:邻接矩阵与邻接表的无向图/有向图构造与输出》为例,详细说明如何通过代码实现这两种图的构造。
参考资源链接:[C++实现:邻接矩阵与邻接表的无向图/有向图构造与输出](https://wenku.csdn.net/doc/89kedgjiyh?spm=1055.2569.3001.10343)
首先,我们需要定义一个二维数组来表示邻接矩阵,数组的大小为顶点数的平方。在无向图中,由于图的对称性,邻接矩阵是对称的,即`matrix[i][j]`与`matrix[j][i]`是相同的。而在有向图中,这两个位置的值可以是不同的,因为边是有方向的。
下面是一个简单的C++代码示例,展示如何构建一个无向图的邻接矩阵:
```cpp
#include <iostream>
#define MAX_VERTICES 5 // 最大顶点数
using namespace std;
int graph[MAX_VERTICES][MAX_VERTICES]; // 邻接矩阵
void initializeGraph() {
int i, j;
for (i = 0; i < MAX_VERTICES; i++) {
for (j = 0; j < MAX_VERTICES; j++) {
graph[i][j] = 0; // 初始化邻接矩阵
}
}
}
void addEdge(int v1, int v2) {
// 添加无向图的边
graph[v1][v2] = 1; // 假设边没有权重
graph[v2][v1] = 1; // 无向图的对称性
}
int main() {
initializeGraph();
addEdge(0, 1); // 添加边(顶点0, 顶点1)
addEdge(1, 2); // 添加边(顶点1, 顶点2)
// 输出邻接矩阵
for (int i = 0; i < MAX_VERTICES; i++) {
for (int j = 0; j < MAX_VERTICES; j++) {
cout << graph[i][j] <<
参考资源链接:[C++实现:邻接矩阵与邻接表的无向图/有向图构造与输出](https://wenku.csdn.net/doc/89kedgjiyh?spm=1055.2569.3001.10343)
阅读全文