在有向图中,如何通过邻接表和逆邻接表实现对顶点出度和入度的计算?请结合代码示例进行说明。
时间: 2024-11-17 12:25:52 浏览: 3
要计算有向图中顶点的出度和入度,我们可以利用邻接表和逆邻接表这两种数据结构。在邻接表中,每个顶点都有一个链表,链表中的节点数量代表了该顶点的出度,即从该顶点出发的边的数量。而在逆邻接表中,每个顶点同样对应一个链表,链表中的节点数量表示顶点的入度,即指向该顶点的边的数量。以下是具体的实现步骤和示例代码:
参考资源链接:[有向图邻接表与逆邻接表详解:存储结构与度量](https://wenku.csdn.net/doc/6i6vd8n2u2?spm=1055.2569.3001.10343)
1. 邻接表的构建和出度计算:
首先,定义邻接表的数据结构,通常可以使用数组或哈希表来实现。对于每个顶点Vi,创建一个链表,将所有从Vi出发的边对应的顶点插入到链表中。顶点的出度即为链表的长度。
```python
class Graph:
def __init__(self, vertices):
self.adj_list = {i: [] for i in range(vertices)} # 初始化邻接表
def add_edge(self, source, destination):
self.adj_list[source].append(destination) # 添加边
def out_degree(self, vertex):
return len(self.adj_list[vertex]) # 计算出度
# 创建图实例,假设有5个顶点
g = Graph(5)
# 添加边,构建邻接表
g.add_edge(0, 1)
g.add_edge(0, 2)
g.add_edge(1, 2)
g.add_edge(2, 3)
g.add_edge(3, 4)
# 计算顶点0的出度
print(
参考资源链接:[有向图邻接表与逆邻接表详解:存储结构与度量](https://wenku.csdn.net/doc/6i6vd8n2u2?spm=1055.2569.3001.10343)
阅读全文