使用邻接矩阵存储无向图
时间: 2023-12-04 16:39:51 浏览: 165
使用邻接矩阵存储无向图的步骤如下:
1. 定义一个顶点类型的一维数组,用于存储顶点。
2. 定义一个int类型的二维数组,用于存储边。对于无向图,邻接矩阵是一个对称矩阵,即edge[i][j] = edge[j][i]。
3. 定义两个int型变量,分别存储顶点数、边数。
4. 初始化邻接矩阵,将所有元素初始化为0。
5. 根据图的实际情况,将边的信息存储到邻接矩阵中。对于无向图,如果顶点i和顶点j之间有一条边,则将edge[i][j]和edge[j][i]的值都设为1。
6. 根据需要,可以输出邻接矩阵或者进行其他操作。
下面是一个使用邻接矩阵存储无向图的示例代码:
```c++
#include <iostream>
using namespace std;
const int max_vertex_num = 100;
typedef char VexType; // 顶点类型
typedef int EdgeType; // 边权值类型
class AMGraph {
public:
VexType vex[max_vertex_num]; // 存储顶点
EdgeType edge[max_vertex_num][max_vertex_num]; // 存储边
int vex_num, edge_num; // 顶点数、边数
// 初始化邻接矩阵
void Init() {
for (int i = 0; i < vex_num; i++) {
for (int j = 0; j < vex_num; j++) {
edge[i][j] = 0;
}
}
}
// 添加边
void AddEdge(int i, int j) {
edge[i][j] = 1;
edge[j][i] = 1;
}
// 输出邻接矩阵
void Print() {
for (int i = 0; i < vex_num; i++) {
for (int j = 0; j < vex_num; j++) {
cout << edge[i][j] << " ";
}
cout << endl;
}
}
};
int main() {
AMGraph g;
g.vex_num = 5;
g.edge_num = 6;
g.vex[0] = 'A';
g.vex[1] = 'B';
g.vex[2] = 'C';
g.vex[3] = 'D';
g.vex[4] = 'E';
g.Init();
g.AddEdge(0, 1);
g.AddEdge(0, 2);
g.AddEdge(1, 2);
g.AddEdge(1, 3);
g.AddEdge(2, 3);
g.AddEdge(3, 4);
g.Print();
return 0;
}
```
阅读全文