有向图的邻接矩阵和邻接表存储结构
时间: 2023-12-07 14:38:04 浏览: 204
图的邻接矩阵存储和邻接表存储
5星 · 资源好评率100%
有向图的邻接矩阵和邻接表存储结构是用于表示有向图中顶点之间相邻关系的两种方法。
1. 邻接矩阵存储结构:
有向图的邻接矩阵是一个n×n的方阵,其中n为图中顶点的个数。对于有向图中的每一条边(i,j),如果存在,则在邻接矩阵中第i行第j列的位置上标记为1,否则标记为0。如果有权值,则在对应位置上存储权值。邻接矩阵存储结构的空间复杂度为O(n^2)。
2. 邻接表存储结构:
邻接表是由一个一维数组和若干个链表组成,数组中的每个元素表示一个顶点,每个顶点vi的所有邻接点构成一个单链表,链表中的每个元素表示vi的一个邻接点。邻接表存储结构的空间复杂度为O(n+e),其中e为边的个数。
下面是Python代码示例:
```python
# 邻接矩阵存储结构
class DirectedGraph:
def __init__(self, vertex_num):
self.vertex_num = vertex_num
self.adj_matrix = [[0] * vertex_num for i in range(vertex_num)]
def add_edge(self, start, end, weight=1):
self.adj_matrix[start][end] = weight
# 邻接表存储结构
class DirectedGraph:
def __init__(self, vertex_num):
self.vertex_num = vertex_num
self.adj_list = [[] for i in range(vertex_num)]
def add_edge(self, start, end, weight=1):
self.adj_list[start].append((end, weight))
```
阅读全文