创建无向带权图,要求:其结点是字符型
时间: 2024-01-21 07:19:21 浏览: 133
好的,下面是一个创建无向带权图的示例代码,其中结点是字符型:
```python
class Graph:
def __init__(self):
self.nodes = set()
self.edges = {}
def add_node(self, value):
self.nodes.add(value)
self.edges[value] = {}
def add_edge(self, node1, node2, weight):
if node1 not in self.nodes:
self.add_node(node1)
if node2 not in self.nodes:
self.add_node(node2)
self.edges[node1][node2] = weight
self.edges[node2][node1] = weight
# 示例用法
g = Graph()
g.add_edge('A', 'B', 5)
g.add_edge('B', 'C', 3)
g.add_edge('C', 'D', 2)
g.add_edge('D', 'E', 4)
```
在这个示例中,我们创建了一个名为`Graph`的类,它具有两个属性:`nodes`和`edges`。`nodes`是一个集合,用于存储图中的所有结点;`edges`是一个字典,用于存储结点之间的边及其权重。
`add_node`方法用于向图中添加一个新结点,并将其加入到`nodes`集合中。如果该结点已经存在,则不进行任何操作。
`add_edge`方法用于向图中添加一条新边。如果指定的结点不存在,则先将其添加到图中。在`edges`字典中,我们使用嵌套字典的形式,将每个结点的邻居结点及其权重存储为该结点的一个子字典。由于这是一个无向图,因此我们在添加边的同时,也需要添加反向边。
阅读全文