用Python实现一个Graph#
基于邻接列表的存储方式,用Python实现一个Graph,要求实现初始化,添加删除节点和边。
1class Graph:
2 def __init__(self):
3
4 self.adj_list = {}
5
6 def print_graph(self):
7 for vertex in self.adj_list:
8 print(vertex, ":", self.adj_list[vertex])
9
10 def add_vertex(self, vertex):
11
12 if vertex not in self.adj_list:
13 self.adj_list[vertex] = []
14 return True
15 return False
16
17 def add_edge(self, v1, v2):
18
19 if v1 in self.adj_list and v2 in self.adj_list:
20 self.adj_list[v1].append(v2)
21 self.adj_list[v2].append(v1)
22 return True
23 return False
24
25 def delete_edge(self, v1, v2):
26 if v1 in self.adj_list and v2 in self.adj_list:
27 try:
28 self.adj_list[v1].remove(v2)
29 self.adj_list[v2].remove(v1)
30 except ValueError:
31 pass
32 return True
33 return False
34
35 def delete_vertex(self, vertex):
36 if vertex not in self.adj_list:
37 return False
38 for other_vertex in self.adj_list[vertex]:
39 self.adj_list[other_vertex].remove(vertex)
40 del self.adj_list[vertex]
41 return True
42
43
44graph = Graph()
45graph.add_vertex("A")
46graph.add_vertex("B")
47graph.add_vertex("C")
48graph.add_vertex("D")
49graph.add_edge("A", "B")
50graph.add_edge("A", "C")
51graph.add_edge("B", "C")
52print("before delete vertex: ")
53graph.print_graph()
54graph.delete_vertex("D")
55graph.delete_vertex("C")
56print("after delete vertex: ")
57graph.print_graph()