好的,我来帮你修改一下之前回答的邻接矩阵表示地图的代码,将结点的删除和修改功能添加进去。
首先,我们需要定义一个函数来删除节点。假设我们的邻接矩阵是一个二维列表adj_matrix,我们可以通过将对应的行和列都设置为0来删除节点:def remove_node(adj_matrix, node): n = len(adj_matrix) if node >= n: print("节点不存在") return adj_matrix # 删除节点 for i in range(n): adj_matrix[node][i] = 0 adj_matrix[i][node] = 0 return adj_matrix
然后,我们来定义一个函数来修改节点的名称。同样假设我们的邻接矩阵是一个二维列表adj_matrix,我们可以通过修改对应的行和列的标签来实现修改操作:def modify_node(adj_matrix, old_label, new_label): n = len(adj_matrix) for i in range(n): if adj_matrix[i][i] == old_label: adj_matrix[i][i] = new_label return adj_matrix
接下来,我们可以结合之前的代码,给出完整的示例:def create_graph(nodes): n = len(nodes) adj_matrix = [[0] * n for _ in range(n)] for i in range(n): adj_matrix[i][i] = nodes[i] return adj_matrixdef add_edge(adj_matrix, start, end): n = len(adj_matrix) if start >= n or end >= n: print("节点不存在") return adj_matrix adj_matrix[start][end] = 1 adj_matrix[end][start] = 1 return adj_matrixdef remove_node(adj_matrix, node): n = len(adj_matrix) if node >= n: print("节点不存在") return adj_matrix # 删除节点 for i in range(n): adj_matrix[node][i] = 0 adj_matrix[i][node] = 0 return adj_matrixdef modify_node(adj_matrix, old_label, new_label): n = len(adj_matrix) for i in range(n): if adj_matrix[i][i] == old_label: adj_matrix[i][i] = new_label return adj_matrixdef print_graph(adj_matrix): for row in adj_matrix: print(row)nodes = ['A', 'B', 'C', 'D']adj_matrix = create_graph(nodes)print("初始地图:")print_graph(adj_matrix)adj_matrix = add_edge(adj_matrix, 0, 1)adj_matrix = add_edge(adj_matrix, 1, 2)adj_matrix = add_edge(adj_matrix, 2, 3)adj_matrix = add_edge(adj_matrix, 3, 0)print("添加边后的地图:")print_graph(adj_matrix)adj_matrix = remove_node(adj_matrix, 1)print("删除节点后的地图:")print_graph(adj_matrix)adj_matrix = modify_node(adj_matrix, 'A', 'E')print("修改节点名称后的地图:")print_graph(adj_matrix)
希望这个回答能够帮助到你,如果有任何疑问,请随时提问!
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |