코드 5-9는 원형 큐에서 데이터를 빼내는 dequeue() 메서드입니다. 원형 큐의 첫 번째 데이터를 삭제한다고 바로 front를 뒤로 이동시켜서는 안 됩니다. dequeue 연산은 삭제된 데이터를 반환해야 하므로 먼저 ret 변수에 삭제될 요소를 담은 후 front를 뒤로 이동시키고 ret 값을 반환해야 합니다.
코드 5-10
def peek(self):
if self.is_empty():
raise Exception("The queue is empty")
return self.container[self.front]
peek() 메서드의 구현은 단순히 front의 요소를 반환하면 됩니다.
마지막으로 원형 큐가 잘 작동하는지 확인해 볼까요?
코드 5-11
cq = CQueue()
for i in range(8):
cq.enqueue(i)
for i in range(5):
print(cq.dequeue(), end=" ")
for i in range(8, 14):
cq.enqueue(i)
while not cq.is_empty():
print(cq.dequeue(), end=" ")
print()
for i in range(10):
print(cq.container[i], end=" ")