더북(TheBook)

코드 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가 있다면 모두 삭제해 줍니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.