用算法实现图的邻接矩阵和邻接表的储存
时间: 2024-05-16 14:17:51 浏览: 92
新建 DOC 文档_实现图的邻接矩阵和邻接表存储_doc_图的遍历算法_
5星 · 资源好评率100%
邻接矩阵和邻接表是两种常见的图储存方式。下面给出用Python语言实现的两种储存方式的算法。
## 邻接矩阵
邻接矩阵是一个二维数组,其中第i行第j列的元素表示点i与点j之间是否有边相连。如果存在边相连,则该元素的值为1,否则为0。
下面给出一个使用邻接矩阵来存储图的Python实现代码:
```python
class Graph:
def __init__(self, num_vertices):
self.num_vertices = num_vertices
self.adj_matrix = [[0] * num_vertices for _ in range(num_vertices)]
def add_edge(self, v1, v2):
self.adj_matrix[v1][v2] = 1
self.adj_matrix[v2][v1] = 1
def remove_edge(self, v1, v2):
self.adj_matrix[v1][v2] = 0
self.adj_matrix[v2][v1] = 0
def print_graph(self):
for row in self.adj_matrix:
print(row)
```
## 邻接表
邻接表是用链表来表示图中每个顶点的邻接顶点的数据结构。
下面给出一个使用邻接表来存储图的Python实现代码:
```python
class Graph:
def __init__(self, num_vertices):
self.num_vertices = num_vertices
self.adj_list = [[] for _ in range(num_vertices)]
def add_edge(self, v1, v2):
self.adj_list[v1].append(v2)
self.adj_list[v2].append(v1)
def remove_edge(self, v1, v2):
self.adj_list[v1].remove(v2)
self.adj_list[v2].remove(v1)
def print_graph(self):
for i in range(self.num_vertices):
print(i, end=" -> ")
for j in self.adj_list[i]:
print(j, end=" ")
print()
```
以上是两种常见的图储存方式的Python实现代码。
阅读全文