728x90
반응형
큐의 활용:
1. 자료를 생성하는 작업과 그 자료를 이용하는 작업이 비동기적으로 일어나는 경우.
2. 자료를 생성하는 작업이 여러곳에서 일어나는 경우.
3. 자료를 이용하는 작업이 여러곳에서 일어나는 경우.
4.자료를 생성하는 작업과 그 자료를 이용하는 작업이 양쪽 여러곳에서 일어나는 경우
5. 자료를 처리하여 새로운 자료를 생성하고 나중에 그 자료를 또 처리해야 하는 작업의 경우
CircularQuueu(환형큐)
꺼내는곳 front 넣는곳 rear 라고 칭함
큐가 가득차면 원소를 넣을 수 없음
dequeue 가 가지고 있는 내장함수 +
isFull() 큐에 데이터 원소가 꽉 차있는지 확인
enqueue, dequeue, peek 구현
class CircularQueue:
def __init__(self, n):
self.maxCount = n
self.data = [None] * n
self.count = 0
self.front = -1
self.rear = -1
def size(self):
return self.count
def isEmpty(self):
return self.count == 0
def isFull(self):
return self.count == self.maxCount
def enqueue(self, x):
if self.isFull():
raise IndexError('Queue full')
self.rear = (self.rear + 1) % self.maxCount
self.data[self.rear] = x
self.count += 1
def dequeue(self):
if self.isEmpty():
raise IndexError('Queue empty')
self.front = (self.front + 1) % self.maxCount
x = self.data[self.front]
self.count -= 1
return x
def peek(self):
if self.isEmpty():
raise IndexError('Queue empty')
return self.data[(self.front+1)%self.maxCount]
반응형
댓글