邻接表创建无向图python
时间: 2024-12-28 16:23:59 浏览: 11
### 创建无向图
为了使用 Python 实现基于邻接表的无向图构建,可以定义一个类 `Graph` 来表示图,并提供方法来添加边和显示图的内容。下面是一个简单的例子:
```python
class Graph:
def __init__(self, vertices):
self.vertices = {vertex: [] for vertex in vertices}
def add_edge(self, u, v):
if v not in self.vertices[u]:
self.vertices[u].append(v)
if u not in selfvertices[v]:
self.vertices[v].append(u)
def print_graph(self):
for vertex in sorted(self.vertices.keys()):
adjacent_vertices = ' '.join(sorted([str(node) for node in self.vertices[vertex]]))
print(f"顶点{vertex}的邻接链表: {vertex} ---> " + '--->'.join(adjacent_vertices.split()) or '-')
```
这段代码首先初始化了一个名为 `Graph` 的类,在构造函数中接受节点列表并为每个节点创建空的邻接列表[^1]。
当调用 `add_edge` 方法时,该方法会检查两个端点之间是否存在连接,如果不存在,则将它们相互加入对方的邻接列表中以保持双向关系,这反映了无向图的特点。
最后,`print_graph` 函数用于打印出整个图形的信息,它遍历所有的顶点及其对应的邻居们,并按字母顺序排列以便于阅读。
#### 使用示例
假设要建立如下描述中的无向图:
- 输入四个结点分别为'a', 'b', 'c' 和'd'
- 定义各结点之间的连通情况
可以通过以下方式实例化对象并向其中添加边:
```python
if __name__ == "__main__":
graph = Graph(['a', 'b', 'c', 'd'])
edges = [
('a', 'b'),
('a', 'c'),
('b', 'c'),
('b', 'd'),
('c', 'a'),
('c', 'd')
]
for edge in edges:
graph.add_edge(*edge)
graph.print_graph()
```
执行上述程序将会得到与给定输入相匹配的结果输出。
阅读全文