added deletion
This commit is contained in:
@ -15,6 +15,27 @@ class Graph:
|
||||
def add_edge(self, start_index: int, end_index: int, length: float) -> None:
|
||||
self.edges.append(Edge(start_index, end_index, length, len(self.edges)))
|
||||
|
||||
def delete_edge(self, edge: Edge) -> None:
|
||||
self.edges.remove(edge)
|
||||
for ed in self.edges:
|
||||
ed.index = self.edges.index(ed)
|
||||
|
||||
def delete_node(self, node: Node) -> None:
|
||||
edges_to_delete=[]
|
||||
for edge in self.edges:
|
||||
if node.index in (edge.start, edge.end):
|
||||
edges_to_delete.append(edge)
|
||||
continue
|
||||
if edge.start > node.index:
|
||||
edge.start -= 1
|
||||
if edge.end > node.index:
|
||||
edge.end -= 1
|
||||
for edge in edges_to_delete:
|
||||
self.delete_edge(edge)
|
||||
self.nodes.remove(node)
|
||||
for no in self.nodes:
|
||||
no.index = self.nodes.index(no)
|
||||
|
||||
def number_of_nodes(self) -> int:
|
||||
return len(self.nodes)
|
||||
|
||||
|
Reference in New Issue
Block a user