用C++语言编写以邻接矩阵作为存储结构,创建以下无向网,并输出该图的所有顶点和邻接矩阵。 4 5 A B C D A B 500 A C 200 A D 150 B C 400
时间: 2024-05-03 15:19:40 浏览: 89
无向图的邻接矩阵存储及输出
以下是C++代码实现:
```cpp
#include <iostream>
#include <cstring>
using namespace std;
const int MAXN = 100;
int n, m;
int G[MAXN][MAXN]; // 邻接矩阵存储图
char id2name[MAXN]; // 顶点编号到名称的映射
int name2id(char name) { // 名称到顶点编号的映射
for (int i = 0; i < n; i++) {
if (id2name[i] == name) {
return i;
}
}
return -1; // 不存在该名称对应的顶点编号
}
void printGraph() { // 输出图的所有顶点和邻接矩阵
cout << "所有顶点: ";
for (int i = 0; i < n; i++) {
cout << id2name[i] << " ";
}
cout << endl;
cout << "邻接矩阵: " << endl;
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
cout << G[i][j] << " ";
}
cout << endl;
}
}
int main() {
n = 4;
m = 5;
// 初始化邻接矩阵为0
memset(G, 0, sizeof(G));
// 初始化顶点编号到名称的映射
id2name[0] = 'A';
id2name[1] = 'B';
id2name[2] = 'C';
id2name[3] = 'D';
// 添加边
G[name2id('A')][name2id('B')] = 500;
G[name2id('A')][name2id('C')] = 200;
G[name2id('A')][name2id('D')] = 150;
G[name2id('B')][name2id('C')] = 400;
printGraph(); // 输出图的所有顶点和邻接矩阵
return 0;
}
```
输出结果为:
```
所有顶点: A B C D
邻接矩阵:
0 500 200 150
500 0 400 0
200 400 0 0
150 0 0 0
```
阅读全文