数据结构图的表示与遍历实验代码
时间: 2024-02-17 22:03:20 浏览: 27
好的,以下是一个简单的Python代码示例,实现了图的邻接矩阵表示方法、深度优先遍历算法和广度优先遍历算法:
```python
class Graph:
def __init__(self, nodes):
self.nodes = nodes
self.edges = [[0] * len(nodes) for i in range(len(nodes))]
def add_edge(self, u, v):
self.edges[u][v] = 1
self.edges[v][u] = 1
def remove_edge(self, u, v):
self.edges[u][v] = 0
self.edges[v][u] = 0
def dfs(self, start_node):
visited = [False] * len(self.nodes)
stack = [start_node]
while stack:
node = stack.pop()
if not visited[node]:
print(node)
visited[node] = True
for i in range(len(self.nodes)):
if self.edges[node][i] and not visited[i]:
stack.append(i)
def bfs(self, start_node):
visited = [False] * len(self.nodes)
queue = [start_node]
while queue:
node = queue.pop(0)
if not visited[node]:
print(node)
visited[node] = True
for i in range(len(self.nodes)):
if self.edges[node][i] and not visited[i]:
queue.append(i)
# 测试代码
nodes = [0, 1, 2, 3, 4]
graph = Graph(nodes)
graph.add_edge(0, 1)
graph.add_edge(0, 2)
graph.add_edge(1, 2)
graph.add_edge(2, 3)
graph.add_edge(3, 4)
graph.dfs(0)
graph.bfs(0)
```
以上代码实现了一个简单的图类 `Graph`,包括初始化函数、添加边函数、删除边函数、深度优先遍历函数和广度优先遍历函数。在测试代码中,我们创建了一个包含5个节点的图,并添加了5条边,然后对该图进行了深度优先遍历和广度优先遍历。