큐(Queue) 란?
- First In First Out
- 순서대로 처리되어야 하는 일에 필요하다
- 먼저 해야 하는 일들을 저장하고 싶을 때
- 데이터를 넣고 뽑는 걸 자주하는 구조
- self.head 와 self.tail 을 모두 가지고 있어야 한다
enqueue
def enqueue(self, value):
new_node = Node(value)
if self.is_empty():
self.head = new_node
self.tail = new_node
return
self.tail.next = new_node
self.tail = new_node
return
- 새로운 노드를 만들고
- 현재 tail노드의 next에 새로운 노드를 연결하고
- tail이 새로운 노드를 가리키게 만든다
dequeue
def dequeue(self):
if self.is_empty():
return "Queue is empty!"
dequeue_node = self.head
self.head = self.head.next
return dequeue_node.data
- head 노드를 변수에 저장해 둔다
- head가 현재 head 노드의 다음 노드를 가리키게 한다
- 저장해둔 노드를 반환
peek
if self.is_empty():
return "Queue is empty!"
return self.head.data
- head 노드를 반환
is_empty
def is_empty(self):
return self.head is None
- head가 빈값인지 아닌지 반환