邻接表创建无向图
时间: 2023-11-05 18:15:38 浏览: 165
邻接表或者邻接矩阵为存储结构实现连通无向图的深度优先和广度优先遍历
3星 · 编辑精心推荐
好的,邻接表是一种表示图的数据结构,其中每个节点用一个链表来存储与其相邻的节点。下面是邻接表创建无向图的基本步骤:
1. 定义一个邻接表的数据结构,包含节点数量和一个链表数组,用于存储每个节点的相邻节点。
2. 读入图的节点数量和边的数量。
3. 对于每条边,读入两个节点的编号,并将它们加入到对方的相邻节点链表中。
4. 创建完邻接表后,遍历链表数组,输出每个节点以及其相邻节点的列表。
下面是一个示例代码片段:
```python
class Node:
def __init__(self, val):
self.val = val
self.next = None
class Graph:
def __init__(self, n):
self.n = n
self.adj = [None] * n
def add_edge(self, u, v):
node = Node(v)
node.next = self.adj[u]
self.adj[u] = node
node = Node(u)
node.next = self.adj[v]
self.adj[v] = node
def print_graph(self):
for i in range(self.n):
print("Node", i, end=": ")
node = self.adj[i]
while node:
print(node.val, end=" ")
node = node.next
print()
```
在上面的代码中,我们定义了一个包含 Node 和 Graph 两个类的邻接表数据结构。Node 类表示邻接表中的节点,Graph 类则表示整个图。
在 Graph 类中,我们定义了一个 add_edge 方法,用于将一条边加入到邻接表中。具体来说,我们对于每条边 (u, v),都在 u 的相邻节点链表中加入节点 v,在 v 的相邻节点链表中加入节点 u。
最后,我们定义了一个 print_graph 方法,用于遍历链表数组,输出每个节点以及其相邻节点的列表。
阅读全文