이 글은 기존 Tistory 블로그에서 옮겨온 글입니다. 원문: https://jms3084.tistory.com/13
1. 큐가 꽉 차있는지 확인하는 함수
def is_queue_full(self):
if self.size - 1 != self.rear:
return False
elif self.size -1 == self.rear and self.front == -1:
return True
else:
for i in range(self.front + 1, self.size):
self.queue[i - 1] = self.queue[i]
self.queue[i] = None
self.front -= 1
self.rear -= 1
return False
2. 큐가 비었는지 확인하는 함수
def is_queue_empty(self):
if self.front == self.rear:
return True
else:
return False
3. 큐에 데이터를 삽입하는 enQueue 함수
def en_queue(self, data):
if (self.is_queue_full()):
return
self.rear += 1
self.queue[self.rear] = data
4. 큐에서 데이터를 추출하는 deQueue 함수
def de_queue(self):
if (self.is_queue_empty()):
return None
self.front += 1
data = self.queue[self.front]
self.queue[self.front] = None
return data
5. 큐에서 front값을 확인하는 peek 함수
def peek(self):
if (self.is_queue_empty()):
return None
return self.queue[self.front + 1]
6. 실습 과제 2번 - 시간 계산 함수
def calc_time(self):
sum = 0
for i in range(self.front + 1, self.rear + 1):
sum += self.queue[i][1]
return sum
7. 큐의 원리
- 큐는 양쪽이 뚫려 있는 구조이다.
- 큐는 선입선출(FIFO) 구조이다.
- 한쪽에서는 삽입만, 다른 쪽에서는 추출만 진행된다.
- 데이터를 삽입할때는 rear + 1 위치에 삽입된다.
- 데이터를 추출할때는 front + 1위치가 추출된다.