-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathgraph_list_imple.py
More file actions
49 lines (40 loc) · 1.27 KB
/
graph_list_imple.py
File metadata and controls
49 lines (40 loc) · 1.27 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
class Graph(object):
def __init__(self, nodes, is_directed=False):
self.nodes = nodes
self.adjlist = {}
self.is_directed = is_directed
for node in self.nodes:
self.adjlist[node] = []
def addEdge(self, u, v):
self.adjlist[u].append(v)
if self.is_directed is False:
self.adjlist[v].append(u)
def removeEdge(self, u, v):
if self.containsEdge(u, v) is False:
return
self.adjlist[u].remove(v)
if self.is_directed is False:
self.adjlist[v].remove(u)
def containsEdge(self, u, v):
return True if v in self.adjlist[u] else False
def print_list(self):
for node in self.nodes:
print(node, "->", self.adjlist[node])
# def dfs(self):
# visited = [False for i in range(self.nodes)]
# print("DFS:")
def __str__(self):
return str(self.adjlist)
# driver code
nodes = ["A", "B", "C", "D", "E"]
edges = [("A", "B"), ("A", "C"), ("B", "D"),
("C", "D"), ("C", "E"), ("D", "E")]
graph = Graph(nodes) # is_directed=True
for u, v in edges:
graph.addEdge(u, v)
graph.print_list()
graph.removeEdge("A", "B")
print()
graph.print_list()
print()
print(graph)