写一个Graph类: 用来表示一个无向图。 成员变量: m_AdjMat:邻接矩阵 m_AdjList:邻接表
时间: 2024-05-01 09:18:21 浏览: 108
无向图的邻接矩阵表示
3星 · 编辑精心推荐
好的,我理解了您的要求。以下是一个简单的Graph类的实现:
```python
class Graph:
def __init__(self, vertices):
self.vertices = vertices
self.m_AdjMat = [[0] * vertices for i in range(vertices)]
self.m_AdjList = [[] for i in range(vertices)]
def add_edge(self, u, v, weight=1):
self.m_AdjMat[u][v] = weight
self.m_AdjMat[v][u] = weight
self.m_AdjList[u].append((v, weight))
self.m_AdjList[v].append((u, weight))
def remove_edge(self, u, v):
self.m_AdjMat[u][v] = 0
self.m_AdjMat[v][u] = 0
self.m_AdjList[u] = [(x,y) for x,y in self.m_AdjList[u] if x!=v]
self.m_AdjList[v] = [(x,y) for x,y in self.m_AdjList[v] if x!=u]
def get_adjacency_matrix(self):
return self.m_AdjMat
def get_adjacency_list(self):
return self.m_AdjList
```
在这个实现中,Graph类接收一个整数参数,表示无向图中的顶点数量。然后它定义了两个成员变量:邻接矩阵(m_AdjMat)和邻接表(m_AdjList),它们都被初始化为具有vertices行和vertices列或vertices个空列表的零矩阵或零列表.
Graph类有两个方法:add_edge和remove_edge,用于添加或删除无向图的边。这些方法将更新邻接矩阵和邻接表。
最后,Graph类还有两个辅助方法:get_adjacency_matrix和get_adjacency_list,用于获取邻接矩阵和邻接表。
希望这个类满足您的需求。
阅读全文