编写程序建立该图的邻接矩阵存储(要求输入边时能直接输入边上两顶点的值)。 2、输出该图深度优先遍历序列和广度优先遍历序列。
时间: 2024-11-22 12:38:05 浏览: 5
在编写程序来构建邻接矩阵并实现图的操作时,首先我们需要定义数据结构来表示图。你可以选择使用二维数组作为邻接矩阵,其中行和列代表图中的顶点,矩阵中的元素`matrix[i][j]`表示顶点i到顶点j是否存在边。以下是使用Python的一个简单示例:
```python
class Graph:
def __init__(self, vertices):
self.V = vertices # 顶点数
self.adj_matrix = [[0 for _ in range(vertices)] for _ in range(vertices)] # 初始化邻接矩阵
def add_edge(self, src, dest):
self.adj_matrix[src][dest] = 1 # 如果存在边,设置对应位置为1
self.adj_matrix[dest][src] = 1 # 对称处理,如果图无方向,则两边都需要标记
# 示例:
g = Graph(5)
g.add_edge(0, 1)
g.add_edge(0, 4)
g.add_edge(1, 2)
g.add_edge(2, 3)
# 输出邻接矩阵
for i in range(g.V):
print(f"Adjacency matrix row {i}: {g.adj_matrix[i]}")
```
对于深度优先搜索(DFS)和广度优先搜索(BFS),可以分别定义两个函数:
```python
def dfs(graph, vertex, visited=None):
if visited is None:
visited = set()
visited.add(vertex)
print(vertex, end=" ")
for neighbor in range(graph.V):
if graph.adj_matrix[vertex][neighbor] == 1 and neighbor not in visited:
dfs(graph, neighbor, visited)
def bfs(graph, start_vertex):
visited = set()
queue = [start_vertex]
visited.add(start_vertex)
while queue:
vertex = queue.pop(0)
print(vertex, end=" ")
for neighbor in range(graph.V):
if graph.adj_matrix[vertex][neighbor] == 1 and neighbor not in visited:
visited.add(neighbor)
queue.append(neighbor)
```
现在你可以通过创建Graph实例,并调用add_edge方法输入边,然后用dfs和bfs函数来获取深度优先和广度优先遍历序列。
阅读全文