实现邻接表生成逆邻接表
时间: 2023-12-07 10:39:10 浏览: 73
实现邻接表生成逆邻接表的方法如下:
1. 创建一个空的逆邻接表,其中包含与原始邻接表相同数量的链表。
2. 遍历原始邻接表中的每个节点,对于每个节点,遍历其出边表中的每个边,将该边的终点节点添加到逆邻接表中对应的链表中。
3. 重复步骤2,直到遍历完原始邻接表中的所有节点和边。
下面是一个Python实现的例子:
```python
# 定义邻接表
adj_list = {
'A': ['B', 'C'],
'B': ['C', 'D'],
'C': ['D'],
'D': ['C'],
'E': ['F'],
'F': ['C']
}
# 初始化逆邻接表
reverse_adj_list = {node: [] for node in adj_list}
# 遍历邻接表,生成逆邻接表
for node in adj_list:
for neighbor in adj_list[node]:
reverse_adj_list[neighbor].append(node)
# 输出逆邻接表
for node in reverse_adj_list:
print(node, reverse_adj_list[node])
```
输出结果为:
```
B ['A']
C ['A', 'B', 'D', 'F']
D ['B', 'C']
F ['E']
```
相关问题
编程实现邻接表生成逆邻接表
好的,下面是邻接表生成逆邻接表的 Python 代码:
```python
def adjacency_list_to_inverse(adj_list):
inverse = {}
for node in adj_list:
for neighbor in adj_list[node]:
if neighbor not in inverse:
inverse[neighbor] = set()
inverse[neighbor].add(node)
return inverse
```
其中,`adj_list` 是邻接表,`inverse` 是逆邻接表,两者都是用 Python 字典实现的。对于每个节点 `node` 的邻居 `neighbor`,将 `node` 加入 `neighbor` 的邻居列表中即可。
需要注意的是,如果邻接表中存在孤立节点(即没有任何邻居的节点),则在生成逆邻接表时应该考虑将其加入逆邻接表中,并将其邻居列表初始化为空集合。
编程实现邻接表生成逆邻接表。
假设有一个有向图,邻接表表示如下:
```python
graph = {
1: [2, 3],
2: [3, 4],
3: [4],
4: [1]
}
```
生成逆邻接表的代码如下:
```python
reverse_graph = {}
for node in graph:
for neighbor in graph[node]:
if neighbor not in reverse_graph:
reverse_graph[neighbor] = [node]
else:
reverse_graph[neighbor].append(node)
```
生成的逆邻接表如下:
```python
reverse_graph = {
2: [1],
3: [1, 2],
4: [2, 3],
1: [4]
}
```
其中,reverse_graph 中的每个 key 表示原图中的节点,对应的 value 则表示指向该节点的节点。
阅读全文