设计一个算法从键盘输入数据并建立邻接矩阵
时间: 2024-09-21 17:02:22 浏览: 34
数据结构课程设计-图的邻接矩阵.doc
设计一个算法从键盘输入数据并构建邻接矩阵通常涉及以下几个步骤:
1. **数据输入**:
- 首先,创建一个空的二维数组或者列表,这个数组的大小将匹配图中顶点的数量。假设我们有一个无向图,每个元素代表一个节点,并且行和列对应其他节点。
2. **循环获取用户输入**:
- 循环提示用户输入每条边的信息,如“请输入节点A到节点B的连接”或“输入第i条边的起点和终点”。
3. **解析输入**:
- 用户输入可能是两个节点的名称或编号,需要将其转换为对应的矩阵索引。比如,如果输入是'A-B',则查找A和B的索引并将该位置设为1表示存在连接(对于无向图,双向连接);如果是有向图,则只设置一行的值。
4. **处理自环和多重边**:
- 检查是否允许自环(即节点到自身的边),以及是否接受多重边(一条边可以连接多次)。这一步可以根据需求选择是否添加。
5. **存储数据**:
- 将用户的输入存储到相应的邻接矩阵位置。记得初始化时,所有非边的值通常是0,表示无连接。
6. **结束输入**:
- 循环直到用户输入"结束"或者其他停止条件。
7. **返回邻接矩阵**:
- 当所有的边都输入完毕后,返回填充好的邻接矩阵作为结果。
以下是一个简单的伪代码示例:
```python
def build_adj_matrix():
n = int(input("请输入图中的顶点数:"))
adj_matrix = [[0] * n for _ in range(n)]
while True:
u, v = input("请输入边的起点和终点(格式:起点-终点,或输入'结束'退出)").split('-')
if u == '结束':
break
try:
u_index, v_index = map(int, [u, v]) # 转换为索引
adj_matrix[u_index][v_index] = 1 # 无向图
adj_matrix[v_index][u_index] = 1 # 如果需要,也可以记录双向连接
except ValueError:
print("输入无效,请重新输入")
return adj_matrix
# 示例运行
adjacency_matrix = build_adj_matrix()
```
阅读全文