头歌实训数据结构根据一个有向图的邻接表建立它的逆邻接表
时间: 2024-12-07 19:12:39 浏览: 96
根据有向图的邻接表建立逆邻接表是一个常见的数据结构操作。逆邻接表是指每个顶点指向其所有前驱顶点的列表,而不是指向后继顶点的列表。以下是建立逆邻接表的步骤和示例代码:
1. **初始化逆邻接表**:创建一个与原邻接表大小相同的空列表。
2. **遍历原邻接表**:对于原邻接表中的每一个顶点,遍历其邻接顶点。
3. **建立逆邻接关系**:对于每一个邻接顶点,在逆邻接表中建立相应的逆邻接关系。
### 示例代码(Python)
```python
# 假设邻接表表示为一个字典,键是顶点,值是一个列表,包含所有邻接顶点
adjacency_list = {
'A': ['B', 'C'],
'B': ['C'],
'C': ['A'],
'D': []
}
# 初始化逆邻接表
inverse_adjacency_list = {vertex: [] for vertex in adjacency_list}
# 遍历原邻接表并建立逆邻接表
for vertex, neighbors in adjacency_list.items():
for neighbor in neighbors:
inverse_adjacency_list[neighbor].append(vertex)
# 打印逆邻接表
print("逆邻接表:")
for vertex, neighbors in inverse_adjacency_list.items():
print(f"{vertex}: {neighbors}")
```
### 解释
1. **初始化逆邻接表**:使用字典推导式创建一个空的逆邻接表,键是原邻接表中的顶点,值是一个空列表。
2. **遍历原邻接表**:使用嵌套循环遍历每个顶点和其邻接顶点。
3. **建立逆邻接关系**:对于每一个邻接顶点,将其前驱顶点添加到逆邻接表中。
### 输出结果
```
逆邻接表:
A: ['C']
B: ['A']
C: ['A', 'B']
D: []
```
通过上述步骤和代码,我们可以根据有向图的邻接表建立其逆邻接表。
阅读全文