编写用邻接矩阵表示有向带权网时,图的基本操作的实现函数,主要包括: ①初始化邻接矩阵表示的有向带权图 ②建立邻接矩阵表示的有向带权图 (即通过输入图的每条边建立图的邻接矩阵) ③输出邻接矩阵表示的有向带权图(即输出图的每条边)同时建立一个验证操作实现的主函数main()进行测试的实现源代码
时间: 2024-02-05 09:14:15 浏览: 195
下面是实现代码:
```c++
#include <iostream>
using namespace std;
const int MAXV = 100; // 最大顶点数
const int INF = 0x3f3f3f3f; // 表示无穷大
int G[MAXV][MAXV]; // 邻接矩阵表示的有向带权图
int n, m; // n表示顶点数,m表示边数
// 初始化邻接矩阵表示的有向带权图
void init() {
for (int i = 0; i < MAXV; i++) {
for (int j = 0; j < MAXV; j++) {
if (i == j) {
G[i][j] = 0; // 初始化对角线上的元素为0
} else {
G[i][j] = INF; // 其他元素初始化为无穷大
}
}
}
}
// 建立邻接矩阵表示的有向带权图
void create() {
cout << "请输入顶点数和边数:" << endl;
cin >> n >> m;
cout << "请输入每条边的起点、终点和边权值:" << endl;
for (int i = 0; i < m; i++) {
int u, v, w;
cin >> u >> v >> w;
G[u][v] = w;
}
}
// 输出邻接矩阵表示的有向带权图
void print() {
cout << "邻接矩阵如下:" << endl;
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
if (G[i][j] == INF) {
cout << "INF\t";
} else {
cout << G[i][j] << "\t";
}
}
cout << endl;
}
}
// 主函数main()进行测试
int main() {
init();
create();
print();
return 0;
}
```
使用示例:
```
请输入顶点数和边数:
4 5
请输入每条边的起点、终点和边权值:
0 1 2
0 2 1
1 2 3
1 3 4
2 3 1
邻接矩阵如下:
0 2 1 INF
INF 0 3 4
INF INF 0 1
INF INF INF 0
```
阅读全文