数据结构(Python) 设有一有向图G,其顶点值为字符型并假设各值互不相等,要求采用邻接表表示法存储。设计一个算法,存储该有向图并输出邻接表。 输入格式: 有多组测试数据,每组数据请依次输入图中各顶点的值,每个顶点值以回车间隔,并以#作为输入结束符;再请依次输入图中每条边的两个顶点值,两个顶点值以空格作为间隔,每输入一组后进行换行,最终以#结束输入。 输出格式: 输出该图中所有顶点值及其出边信息(边值按从小到大),具体格式见样例。 输入样例: 在这里给出一组输入。例如: A B C D # C D B D A D A C A B # 输出样例: 在这里给出相应的输出。例如: A->1->2->3 B->3 C->3 D
时间: 2023-12-14 10:38:03 浏览: 63
可以使用Python中的字典来实现邻接表表示法。具体实现可以按照以下步骤:
1. 创建一个空字典adj_list,用于存储邻接表。
2. 读入图中各顶点的值,直到遇到'#'为止。将每个顶点值作为字典的键,对应的值初始化为空列表。
3. 读入图中每条边的两个顶点值,直到遇到'#'为止。将第一个顶点值对应的列表中添加第二个顶点值。
4. 遍历字典,输出每个顶点值及其出边信息,边值按从小到大的顺序输出。
具体代码如下:
```python
while True:
adj_list = {} # 创建空字典
# 读入顶点值,以#结束输入
while True:
v = input().strip()
if v == '#':
break
adj_list[v] = [] # 将顶点值作为键,对应的值初始化为空列表
# 读入边,以#结束输入
while True:
line = input().strip()
if line == '#':
break
u, v = line.split()
adj_list[u].append(v) # 将第一个顶点值对应的列表中添加第二个顶点值
# 遍历字典,输出每个顶点及其出边信息
for v in sorted(adj_list.keys()):
print(v, end='->')
adj_list[v].sort() # 对出边进行排序
for u in adj_list[v]:
print(u, end='->')
print()
```
阅读全文