1.设计MatToList( ) 函数,把用户输入的邻接矩阵转化为邻接表。实现对使用邻接表存储的图的深度优先遍历。
时间: 2024-05-03 21:18:27 浏览: 209
PathAll邻接表输出路径(数据结构)
以下是Python语言的实现:
```python
def MatToList(matrix):
graph = {}
for i in range(len(matrix)):
adj_list = []
for j in range(len(matrix[i])):
if matrix[i][j] != 0:
adj_list.append(j)
graph[i] = adj_list
return graph
def DFS(graph, start):
visited = set()
stack = [start]
while stack:
vertex = stack.pop()
if vertex not in visited:
visited.add(vertex)
stack.extend(set(graph[vertex]) - visited)
return visited
```
使用示例:
```python
matrix = [[0, 1, 1, 0],
[1, 0, 0, 1],
[1, 0, 0, 1],
[0, 1, 1, 0]]
graph = MatToList(matrix)
print(DFS(graph, 0)) # 输出:{0, 1, 2, 3}
```
其中,`MatToList()`函数将邻接矩阵转换为邻接表,`DFS()`函数实现深度优先遍历。在`DFS()`函数中,使用了一个栈来保存待访问的节点。每次从栈中弹出一个节点,将其加入已访问的集合中,并将其未访问的邻居节点加入栈中。在这个过程中,如果栈为空,则遍历结束。
阅读全文