写以邻接矩阵为存储结构建立无向图的代码
时间: 2024-03-24 21:37:45 浏览: 61
数据结构-c语言-带main函数-图7.2-图的存储结构-图的邻接矩阵的创建-无向图。
好的,以下是以邻接矩阵为存储结构建立无向图的代码:
```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 __str__(self):
return '\n'.join([' '.join([str(cell) for cell in row]) for row in self.adj_matrix])
```
在上面的代码中,我们定义了一个名为 `Graph` 的类,该类具有以下方法:
- `__init__(self, num_vertices)`: 构造函数,用于初始化邻接矩阵和顶点数量。
- `add_edge(self, v1, v2)`: 添加一条边,该方法在邻接矩阵中将相应的位置设置为 1。
- `remove_edge(self, v1, v2)`: 删除一条边,该方法在邻接矩阵中将相应的位置设置为 0。
- `__str__(self)`: 将邻接矩阵转换为字符串并返回。
在上面的代码中,我们使用了一个二维列表来表示邻接矩阵,其中列表的长度和宽度都是顶点的数量。矩阵中的每个元素都表示两个顶点之间是否有边。如果邻接矩阵中 `(i, j)` 处的值为 1,则表示顶点 `i` 和顶点 `j` 之间有一条边。如果邻接矩阵中 `(i, j)` 处的值为 0,则表示顶点 `i` 和顶点 `j` 之间没有边。同时,由于是无向图,我们需要在邻接矩阵中同时设置 `(i, j)` 和 `(j, i)` 处的值为 1。
以上就是以邻接矩阵为存储结构建立无向图的代码。
阅读全文