实现图的邻接矩阵存储
时间: 2023-12-11 18:14:27 浏览: 31
邻接矩阵是一种常用的图的存储方式,可以用一个二维数组来表示。假设有 $n$ 个顶点,那么邻接矩阵的大小就是 $n \times n$。其中,第 $i$ 行第 $j$ 列的元素表示顶点 $i$ 和顶点 $j$ 之间是否有边,如果有边则为 $1$,否则为 $0$。
下面是一个示例代码实现:
```python
class Graph:
def __init__(self, vertices):
self.vertices = vertices
self.adj_matrix = [[0] * vertices for _ in range(vertices)]
def add_edge(self, u, v):
self.adj_matrix[u][v] = 1
self.adj_matrix[v][u] = 1
def remove_edge(self, u, v):
self.adj_matrix[u][v] = 0
self.adj_matrix[v][u] = 0
def print_adj_matrix(self):
for row in self.adj_matrix:
print(row)
```
其中,`vertices` 表示图中顶点的个数,`adj_matrix` 表示邻接矩阵。`add_edge` 方法用于添加一条边,`remove_edge` 方法用于删除一条边,`print_adj_matrix` 方法用于打印邻接矩阵。
示例使用:
```python
# 创建一个有5个顶点的图
g = Graph(5)
# 添加一些边
g.add_edge(0, 1)
g.add_edge(0, 4)
g.add_edge(1, 2)
g.add_edge(1, 3)
g.add_edge(1, 4)
g.add_edge(2, 3)
g.add_edge(3, 4)
# 打印邻接矩阵
g.print_adj_matrix()
# 输出:
# [0, 1, 0, 0, 1]
# [1, 0, 1, 1, 1]
# [0, 1, 0, 1, 0]
# [0, 1, 1, 0, 1]
# [1, 1, 0, 1, 0]
```
上面的代码演示了一个5个顶点的图,其中有7条边,我们可以看到邻接矩阵正确地表示了这张图的结构。