实验内容与步骤 (1)以邻接矩阵形式创建一个无向图; (2)以邻接表的形式创建一个无向图。
时间: 2023-12-10 22:40:40 浏览: 91
1. 创建邻接矩阵无向图:
邻接矩阵是一个二维数组,其中每个元素表示两个顶点之间是否存在边。对于无向图,矩阵是对称的(即第 i 行 j 列和第 j 行 i 列的值相同)。
步骤如下:
1. 创建一个 n × n 的二维数组,其中 n 表示图中顶点的数量;
2. 初始化每个元素为 0,表示没有边相连;
3. 对于每个边 (i, j),将 matrix[i][j] 和 matrix[j][i] 的值设为 1。
示例代码:
```python
n = 5 # 图中顶点数量
matrix = [[0] * n for _ in range(n)] # 初始化矩阵
# 添加边
edges = [(0, 1), (0, 4), (1, 2), (1, 3), (1, 4), (2, 3), (3, 4)]
for i, j in edges:
matrix[i][j] = matrix[j][i] = 1
# 打印矩阵
for row in matrix:
print(row)
```
输出结果:
```
[0, 1, 0, 0, 1]
[1, 0, 1, 1, 1]
[0, 1, 0, 1, 0]
[0, 1, 1, 0, 1]
[1, 1, 0, 1, 0]
```
2. 创建邻接表无向图:
邻接表是一个列表,其中每个元素表示一个顶点以及与其相连的所有顶点。对于无向图,每个边需要在两个顶点的邻接表中同时出现。
步骤如下:
1. 创建一个包含 n 个空列表的列表,其中 n 表示图中顶点的数量;
2. 对于每个边 (i, j),在 i 的邻接表中添加 j,同时在 j 的邻接表中添加 i。
示例代码:
```python
n = 5 # 图中顶点数量
adj_list = [[] for _ in range(n)] # 初始化邻接表
# 添加边
edges = [(0, 1), (0, 4), (1, 2), (1, 3), (1, 4), (2, 3), (3, 4)]
for i, j in edges:
adj_list[i].append(j)
adj_list[j].append(i)
# 打印邻接表
for i, neighbors in enumerate(adj_list):
print(f'{i}: {neighbors}')
```
输出结果:
```
0: [1, 4]
1: [0, 2, 3, 4]
2: [1, 3]
3: [1, 2, 4]
4: [0, 1, 3]
```
阅读全文