원형 큐가 비어 있는지 판단하려면 front와 rear가 같은지 비교하면 됩니다.
코드 5-6
def __step_forward(self, x): ➊
x += 1
if x >= CQueue.MAXSIZE:
x = 0
return x
➊ 편의 함수: front나 rear를 뒤로 이동했을 때 동적 배열을 벗어난다면 동적 배열의 맨 처음으로 이동시킵니다.
코드 5- 6의 __step_forward() 메서드는 front나 rear의 이동을 돕습니다. enqueue나 dequeue 연산을 할 때 무작정 front나 rear에 1을 더할 수는 없습니다. 항상 동적 배열의 끝에 도달했는지 아닌지를 판단한 후 이동해야 하므로 이를 편의 메서드로 만들어 둡니다. __step_forward() 메서드는 뒤로 이동한 후 동적 배열을 벗어나면 배열의 맨 처음으로 이동하도록 만들어 줍니다.
코드 5-7
def is_full(self):
next = self.__step_forward(self.rear)
if next == self.front:
return True
return False