设计一个程序,采用交互方式建立一个无向图的邻接表表示
时间: 2024-05-04 19:19:17 浏览: 121
好的,我可以为您提供一个 Python 代码示例,用于交互式建立无向图的邻接表表示。代码如下:
```python
class Graph:
def __init__(self, vertices):
self.vertices = vertices
self.adj_list = {}
for v in vertices:
self.adj_list[v] = []
def add_edge(self, u, v):
self.adj_list[u].append(v)
self.adj_list[v].append(u)
def display(self):
for vertex in self.vertices:
print(vertex, ':', ' -> '.join([str(i) for i in self.adj_list[vertex]]))
vertices = []
num_vertices = int(input('Enter the number of vertices in the graph: '))
for i in range(num_vertices):
vertex = input(f'Enter vertex {i+1}: ')
vertices.append(vertex)
g = Graph(vertices)
while True:
print('1. Add an edge')
print('2. Display the graph')
print('3. Exit')
choice = int(input('Enter your choice: '))
if choice == 1:
u = input('Enter vertex u: ')
v = input('Enter vertex v: ')
g.add_edge(u, v)
elif choice == 2:
g.display()
elif choice == 3:
break
```
该代码首先定义了一个 `Graph` 类,以及它的成员变量 `vertices` 和 `adj_list`,分别表示图中的顶点和邻接表。在类的构造函数中,我们初始化了邻接表,并将每个顶点的邻接表初始化为空列表。
接下来,通过 `add_edge` 方法,我们可以向图中添加一条边,该方法将 `u` 和 `v` 两个顶点加入彼此的邻接表中。注意到这里是无向图,因此我们需要将边加入两个顶点的邻接表中。
最后,我们在一个无限循环中,提供了三个选项:添加边,显示图和退出程序。用户可以选择相应的选项进行操作,例如添加边时需要输入两个顶点的名称。显示图时,我们遍历每个顶点的邻接表,并将其打印出来。
希望这个示例能够帮助您理解如何使用交互式方式建立无向图的邻接表表示。
阅读全文