c++代码
时间: 2023-07-09 08:13:03 浏览: 33
以下是将邻接矩阵转化为邻接表的 C++ 代码:
```c++
#include <iostream>
#include <vector>
using namespace std;
vector<vector<int>> adjacency_matrix_to_list(vector<vector<int>>& adj_matrix) {
vector<vector<int>> adj_list(adj_matrix.size());
for (int i = 0; i < adj_matrix.size(); i++) {
for (int j = 0; j < adj_matrix[i].size(); j++) {
if (adj_matrix[i][j] == 1) {
adj_list[i].push_back(j);
adj_list[j].push_back(i); // 无向图需要同时添加起点和终点的边
}
}
}
return adj_list;
}
int main() {
vector<vector<int>> adj_matrix = {
{0, 1, 1, 0},
{1, 0, 1, 1},
{1, 1, 0, 1},
{0, 1, 1, 0}
};
vector<vector<int>> adj_list = adjacency_matrix_to_list(adj_matrix);
// 打印邻接表
for (int i = 0; i < adj_list.size(); i++) {
cout << i << ": ";
for (int j = 0; j < adj_list[i].size(); j++) {
cout << adj_list[i][j] << " ";
}
cout << endl;
}
return 0;
}
```
其中,adj_matrix 是邻接矩阵,adj_list 是转化后的邻接表,返回值即为 adj_list。