已知无向图的邻接矩阵,求无向图的邻接表的代码
时间: 2023-06-11 19:09:17 浏览: 149
下面是将无向图的邻接矩阵转换为邻接表的 Python 代码:
```python
def adj_matrix_to_list(adj_matrix):
# 获取邻接矩阵的行数和列数
rows, cols = adj_matrix.shape
# 定义空的邻接表
adj_list = {}
# 遍历邻接矩阵的每个元素,将非零元素加入邻接表
for i in range(rows):
adj_list[i] = []
for j in range(cols):
if adj_matrix[i][j] != 0:
adj_list[i].append(j)
return adj_list
```
其中,`adj_matrix` 是一个二维的邻接矩阵,返回的 `adj_list` 是一个字典,其中每个键表示一个节点,对应的值是一个列表,表示与该节点相邻的所有节点。
相关问题
c++设计算法将无向图邻接矩阵转换为邻接表,将邻接表转换为邻接矩阵
将无向图的邻接矩阵转换为邻接表,可以遍历整个矩阵,对于每个非零元素,将其所在的行和列分别对应到邻接表中的一个顶点,然后在这两个顶点的邻接表中分别添加对方作为相邻节点的边。具体实现代码如下:
```c++
#include <iostream>
#include <vector>
using namespace std;
vector<vector<int>> matrixToAdjList(vector<vector<int>> matrix) {
int n = matrix.size();
vector<vector<int>> adjList(n);
for (int i = 0; i < n; i++) {
for (int j = i + 1; j < n; j++) {
if (matrix[i][j] != 0) {
adjList[i].push_back(j);
adjList[j].push_back(i);
}
}
}
return adjList;
}
```
将邻接表转换为邻接矩阵,可以先遍历邻接表中的所有顶点,对于每个顶点,遍历其邻接表中的节点,将其对应的邻接矩阵位置设为1。具体实现代码如下:
```c++
vector<vector<int>> adjListToMatrix(vector<vector<int>> adjList) {
int n = adjList.size();
vector<vector<int>> matrix(n, vector<int>(n, 0));
for (int i = 0; i < n; i++) {
for (int j : adjList[i]) {
matrix[i][j] = 1;
matrix[j][i] = 1;
}
}
return matrix;
}
```
以上是将无向图的邻接矩阵转换为邻接表,以及将邻接表转换为邻接矩阵的具体实现代码,您可以根据实际情况进行调整。
设计算法将一个无向图的邻接表转换成邻接矩阵 点击复制后,将打开C知道体验页 好的代码
可以参考以下 Python 代码实现:
```python
# 将邻接表表示的图转换为邻接矩阵
def adjacency_list_to_matrix(graph):
n = len(graph)
matrix = [[0 for _ in range(n)] for _ in range(n)]
for i in range(n):
for v in graph[i]:
matrix[i][v] = 1
return matrix
```
其中,`graph` 是以邻接表表示的图,返回的 `matrix` 是对应的邻接矩阵。具体实现方法是按行遍历邻接表,对于每个节点的邻居,在对应的邻接矩阵位置标为 1。最后返回得到的邻接矩阵就可以了。
阅读全文