기술개발/Algorithm
알고리즘 3주차 - 큐
한승욱
2021. 1. 28. 20:52
반응형
큐
- 한쪽 끝으로 자료를 넣고, 반대쪽에서는 자료를 뺄 수 있는 선형구조
- 놀이기구가 한 줄로 서서 한줄로 나오는 것을 비유 가능
- First In First Out
💡
큐가 제공하는 기능
enque(data): 맨 뒤에 데이터 추가
dequeue(): 맨 위의 데이터 뽑기
peek(): 맨 위의 데이터 보기
isEmpty(): 큐가 비었는지 안 비었는지 여부 반환
스택과 마찬가지로 데이터 넣고 뽑는 걸 자주하는 자료 구조이므로
링크드 리스트와 유사하게 구현 가능
스택과 다르게 끝과 시작의 노드를 전부 가지고 있어야 함
self.head, self.tail
class Node:
def __init__(self, data):
self.data = data
self.next = None
class Queue:
def __init__(self):
self.head = None
self.tail = None
def enqueue(self, value):
new_node = Node()
if self.is_empty():
self.head = new_node
self.tail = new_node
return
self.tail.next = new_node
self.tail = new_node
def dequeue(self):
if self.is_empty():
return "Queue is Empty"
delete_head = self.head
self.head = self.head.next
return delete_head.data
def peek(self):
if self.is_empty():
return "Queue is Empty"
return self.head.data
def is_empty(self):
return self.head is None
반응형