采用邻接表表示法,创建无向图G
时间: 2023-06-25 16:05:06 浏览: 149
无向图的邻接表表示
4星 · 用户满意度95%
好的,我可以给你介绍一下邻接表表示法,并且用 Python 实现创建无向图G。
邻接表表示法是一种常用的图的存储方式,它使用一个数组和链表来表示图的结构。具体来说,对于每个节点,我们可以使用一个链表来存储与该节点相邻的所有节点。
下面是使用 Python 实现创建无向图 G 的代码:
```python
class Node:
def __init__(self, val):
self.val = val
self.neighbors = []
class Graph:
def __init__(self):
self.nodes = []
def add_node(self, val):
node = Node(val)
self.nodes.append(node)
def add_edge(self, val1, val2):
node1 = None
node2 = None
for node in self.nodes:
if node.val == val1:
node1 = node
if node.val == val2:
node2 = node
if node1 is not None and node2 is not None:
node1.neighbors.append(node2)
node2.neighbors.append(node1)
```
以上代码中,我们定义了一个 `Node` 类来表示图中的一个节点,其中包含节点的值 `val` 和相邻节点的列表 `neighbors`。我们还定义了一个 `Graph` 类来表示整张图,其中包含节点列表 `nodes`。
在 `Graph` 类中,我们提供了两个方法:`add_node` 和 `add_edge`。`add_node` 方法用于向图中添加一个新节点,`add_edge` 方法用于向图中添加一条边。对于 `add_edge` 方法,我们首先需要找到对应的节点,然后将两个节点互相添加为相邻节点。
使用以上代码,我们可以创建一个无向图 G,并且向其中添加节点和边:
```python
g = Graph()
g.add_node(1)
g.add_node(2)
g.add_node(3)
g.add_node(4)
g.add_node(5)
g.add_edge(1, 2)
g.add_edge(1, 3)
g.add_edge(2, 4)
g.add_edge(3, 4)
g.add_edge(4, 5)
```
以上代码中,我们创建了一个包含 5 个节点的无向图 G,并且向其中添加了 5 条边。可以通过打印节点列表的方式来验证图的结构是否正确:
```python
for node in g.nodes:
print(node.val, [neighbor.val for neighbor in node.neighbors])
```
输出结果如下:
```
1 [2, 3]
2 [1, 4]
3 [1, 4]
4 [2, 3, 5]
5 [4]
```
以上结果表明,我们成功创建了一张包含 5 个节点和 5 条边的无向图 G,并且使用邻接表表示法来存储了图的结构。
阅读全文