코드 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를 이용하면 매우 쉽게 구현할 수 있지요.