
Queue
07 Jan 2019 | DataStructure포스팅
concept
큐란 목록 한쪽 끝에서만 자료를 넣거나 뺄 수 있는 자료구조의 일종입니다. 먼저 집어넣은 데이터가 먼저 나오는 FIFO(First In First Out) 구조로 저장하는 형식을 가리킵니다. 사람들이 표를 사거나 순서를 기다리려고 일렬로 늘어선 줄(queue)을 연상하면 이해가 쉽습니다. 다시 말해 먼저 줄을 선 사람(데이터)이 먼저 나갈 수 있다는 것이지요. 구조를 보면 다음 그림과 같습니다.
<내용>
operation
큐의 핵심 연산은 $enqueue$와 $dequeue$입니다. 연결리스트(linked list) 형태로 큐를 구현했을 때 예시는 다음과 같습니다. $enqueue5 -> enqueue3 -> enqueue1 -> dequeue -> dequeue -> enqueue7$
<내용>
<내용>
<내용>
class CircularQueue():
# Constructor
def __init__(self):
self.queue = list()
self.head = 0
self.tail = 0
self.maxSize = 8
# Adding elements to the queue
def enqueue(self,data):
if self.size() == self.maxSize-1:
return ("Queue Full!")
self.queue.append(data)
self.tail = (self.tail + 1) % self.maxSize
return True
# Removing elements from the queue
def dequeue(self):
if self.size()==0:
return ("Queue Empty!")
data = self.queue[self.head]
self.head = (self.head + 1) % self.maxSize
return data
# Calculating the size of the queue
def size(self):
if self.tail>=self.head:
return (self.tail-self.head)
return (self.maxSize - (self.head-self.tail))
가져온곳: URL