더북(TheBook)

이때 이전 코드에서는 두 번째 데이터 노드가 self.head.next.next였지만, 이번에는 self.head.next.prev란 점에 주의해야 합니다. 이전에 head의 next가 두 번째 데이터 노드를 가리키도록 변경했기 때문입니다. 두 번째 데이터 노드의 prev까지 더미 노드를 가리키도록 하면 더 이상 첫 번째 데이터 노드를 가리키는 참조는 없습니다. 이제 가비지 컬렉터가 이 노드를 삭제할 것입니다.

delete_first() 메서드를 이해했다면 삭제 연산의 나머지 두 메서드인 delete_last()delete_node() 역시 쉽게 이해할 수 있을 것입니다. 코드만 싣도록 하겠습니다. 꼭 그림을 그려 가면서 이해해 보기 바랍니다.

코드 4-10

    def delete_last(self):
        if self.empty():
            return
        self.tail.prev = self.tail.prev.prev
        self.tail.prev.next = self.tail

        self.d_size -= 1

    def delete_node(self, node):
        node.prev.next = node.next
        node.next.prev = node.prev

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