求邻接表表示的有向图各顶点的入度 正文:已知有一个有向图的邻接表,试编写一个算法,计算各顶点的入度。
时间: 2024-02-09 16:10:04 浏览: 75
-针对一按照邻接表存放的有向图,计算图中节点的出度和入度
5星 · 资源好评率100%
算法步骤如下:
1. 初始化一个数组 inDegree,长度为顶点数,全部初始化为0。
2. 遍历邻接表,对于每个链表中的节点,将节点指向的顶点的入度加1,即:inDegree[v]++,其中 v 是节点指向的顶点。
3. 遍历 inDegree 数组,输出每个顶点的入度。
下面是 Python 代码实现:
```python
def calc_indegree(adj_list):
# 初始化入度数组
num_vertices = len(adj_list)
in_degree = [0] * num_vertices
# 遍历邻接表,计算入度
for edges in adj_list:
for v in edges:
in_degree[v] += 1
# 输出入度
for i in range(num_vertices):
print(f"Vertex {i} has in-degree {in_degree[i]}")
# 示例代码
adj_list = [[1, 2], [2], [3], [], [1, 2]]
calc_indegree(adj_list)
```
输出结果为:
```
Vertex 0 has in-degree 1
Vertex 1 has in-degree 1
Vertex 2 has in-degree 2
Vertex 3 has in-degree 1
Vertex 4 has in-degree 0
```
其中,邻接表表示的有向图如下所示:
```
0 -> 1 -> 2
1 -> 2
2 -> 3
3 ->
4 -> 1 -> 2
```
阅读全文