코드 6-3
def delete_vertex(self, v):
if v >= self.vtx_num:
raise Exception(f"There is no vertex of {v}")
# 정점 v가 있으면
if self.vtx_arr[v]:
# 정점 v의 인접 정점 집합을 초기화합니다.
self.adj_list[v] = []
self.vtx_num -= 1
self.vtx_arr[v] = False
# 나머지 정점 중 v와 인접한 정점이 있다면
# 그 정점의 리스트에서 v를 제거해 줍니다.
for adj in self.adj_list:
for vertex in adj:
if vertex == v:
adj.remove(vertex)
코드 6-3은 delete_vertex() 메서드입니다. 매개변수로 전달한 v가 있다면 먼저 인접 리스트의 해당 요소를 빈 리스트로 초기화해 둡니다. 나중에 다시 활성화하여 사용할 것입니다. vtx_arr에서 삭제될 정점 값을 False로 바꿉니다. 이는 정점을 삭제하면서 해당 인덱스를 비활성화하는 것과 같습니다. 마지막으로 인접 리스트를 모두 순회하면서 에지에 v가 있다면 모두 삭제해 줍니다.