1、实现图的邻接矩阵和邻接表的存储。 (1)建立图1的邻接表存储结构并输出; (2)建立图1的邻接矩阵存储结构并输出。
时间: 2024-03-01 20:52:25 浏览: 93
好的,以下是实现图的邻接矩阵和邻接表的Python代码:
```python
# 邻接表存储结构
class EdgeNode:
def __init__(self, adjvex):
self.adjvex = adjvex # 邻接点的索引
self.next = None # 指向下一个邻接点的指针
class VertexNode:
def __init__(self, data):
self.data = data # 顶点的数据
self.first = None # 指向第一个邻接点的指针
def create_graph_by_adj_list():
n = 6 # 图的顶点数
vertex_data = ['A', 'B', 'C', 'D', 'E', 'F']
edges = [(0, 1), (0, 2), (1, 2), (1, 3), (2, 4), (3, 4), (3, 5), (4, 5)]
graph = []
# 初始化顶点
for i in range(n):
vertex = VertexNode(vertex_data[i])
graph.append(vertex)
# 添加边
for edge in edges:
from_idx = edge[0]
to_idx = edge[1]
edge = EdgeNode(to_idx)
edge.next = graph[from_idx].first
graph[from_idx].first = edge
return graph
def create_graph_by_adj_matrix():
n = 6 # 图的顶点数
edges = [(0, 1), (0, 2), (1, 2), (1, 3), (2, 4), (3, 4), (3, 5), (4, 5)]
# 初始化邻接矩阵
matrix = [[0] * n for _ in range(n)]
# 添加边
for edge in edges:
from_idx = edge[0]
to_idx = edge[1]
matrix[from_idx][to_idx] = 1
matrix[to_idx][from_idx] = 1 # 无向图需要加上这一行
return matrix
def print_graph_by_adj_list(graph):
print("Graph by Adjacency List:")
for i in range(len(graph)):
print(graph[i].data + ": ", end="")
edge = graph[i].first
while edge is not None:
print(graph[edge.adjvex].data + " ", end="")
edge = edge.next
print()
def print_graph_by_adj_matrix(graph):
print("Graph by Adjacency Matrix:")
for i in range(len(graph)):
for j in range(len(graph[i])):
print(graph[i][j], end=" ")
print()
if __name__ == '__main__':
graph1 = create_graph_by_adj_list()
print_graph_by_adj_list(graph1)
graph2 = create_graph_by_adj_matrix()
print_graph_by_adj_matrix(graph2)
```
这段代码实现了:
1. 创建了一个以邻接表方式存储的图,并输出了它的邻接表;
2. 创建了一个以邻接矩阵方式存储的图,并输出了它的邻接矩阵。
注意,这里的图是无向图,如果是有向图需要修改相应的代码。
阅读全文
相关推荐
![application/msword](https://img-home.csdnimg.cn/images/20210720083327.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)