더북(TheBook)

코드 11-1

class Element:
    def __init__(self, key):
        self.key = key

class MaxHeap:
    MAX_ELEMENTS = 100
    def __init__(self):
        self.arr = [None for i in range(self.MAX_ELEMENTS+1)]
        self.heapsize = 0

    def is_empty(self):
        if self.heapsize == 0:
            return True
        return False

    def is_full(self):
        if self.heapsize >= self.MAX_ELEMENTS:
            return True
        return False

코드 11-1을 보면 힙에 저장할 요소를 Element 클래스로 정의했습니다. 멤버로 키만 있는데 여기에 data 멤버를 추가하면 실제 저장하려는 데이터를 참조할 수 있겠군요. MaxHeap 클래스의 인스턴스는 실제로 요소를 저장할 배열과 힙의 크기를 저장할 heapsize를 멤버로 가집니다. 이번 예제에서는 힙의 크기를 최대 MAX_ELEMENTS로 제한하고 있지만, 실제 구현에서는 힙이 가득 찼을 때 크기를 2배 늘려 가며 계속 요소를 저장하면 될 것입니다. is_empty()is_full() 메서드의 구현은 heapsize를 이용하면 매우 쉽게 구현할 수 있지요.

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