实现图的邻接矩阵和邻接表存储
时间: 2023-11-05 07:14:05 浏览: 61
图的邻接矩阵和邻接表存储结构(C++)
邻接矩阵和邻接表是两种常用的图的存储方式。
邻接矩阵是一个二维数组,其中行和列分别表示图中的节点,数组中的元素表示节点之间的连接情况。如果节点 i 和节点 j 之间有连接,则邻接矩阵中第 i 行第 j 列的元素为 1,否则为 0。
邻接表则是由一个数组和一个链表组成,数组中的每个元素表示一个节点,数组中的每个元素对应的链表中存储该节点所连接的其他节点。具体来说,对于每个节点 i,邻接表中第 i 个位置存储一个链表,链表中的每个元素表示节点 i 所连接的其他节点。
下面是邻接矩阵和邻接表的示例代码:
```python
# 邻接矩阵
class AdjacencyMatrix:
def __init__(self, n):
self.matrix = [[0] * n for _ in range(n)]
def add_edge(self, i, j):
self.matrix[i][j] = 1
self.matrix[j][i] = 1
def remove_edge(self, i, j):
self.matrix[i][j] = 0
self.matrix[j][i] = 0
# 邻接表
class AdjacencyList:
def __init__(self, n):
self.list = [[] for _ in range(n)]
def add_edge(self, i, j):
self.list[i].append(j)
self.list[j].append(i)
def remove_edge(self, i, j):
self.list[i].remove(j)
self.list[j].remove(i)
```
其中,n 表示节点的数量。对于邻接矩阵,matrix[i][j] 表示节点 i 和节点 j 之间是否有连接;对于邻接表,list[i] 表示节点 i 所连接的其他节点。add_edge 和 remove_edge 分别是添加和删除节点之间的连接的方法。
阅读全文