#include <iostream>
#include <string>
using namespace std;
构建函数
void build_adj_matrix(int **matrix, string *node, int num, int edges) {
for (int i = 0; i < edges; i++) {
string start, end;
int weight;
cin >> start >> end >> weight;
int from = -1;
int to = -1;
for (int j = 0; j < num; j++) {
if (start == node[j]) from = j;
if (end == node[j]) to = j;
}
if (from != -1 and to != -1) {
matrix[from][to] = weight;
matrix[to][from] = weight;
}
}
}
打印函数
void print_adj_matrix(int** matrix, int num) {
cout << "打印邻接矩阵" << endl;
for (int i = 0; i < num; i++) {
for (int j = 0; j < num; j++) {
cout << matrix[i][j] << " ";
}
cout << endl;
}
}
主函数
int main_adj_matrix() {
int num;
int edges;
cin >> num >> edges;
// 初始化二维数组
int** matrix = new int* [num];
for (int i = 0; i < num; i++) {
matrix[i] = new int[num];
}
for (int i = 0; i < num; i++) {
for (int j = 0; j < num; j++) {
matrix[i][j] = 0;
}
}
// 保存节点名称
string* node = new string [num];
for (int i = 0; i < num; i++) {
cin >> node[i];
}
build_adj_matrix(matrix, node, num, edges);
print_adj_matrix(matrix, num);
delete [] node;
for (int i = 0; i < num; i++) {
delete[] matrix[i];
}
delete [] matrix;
return 0;
}