반응형
Queue 큐란 무엇인가?
한쪽 끝으로 자료를 넣고, 반대쪽에서는 자료를 뺄 수 있는 선형 구조.(선입선출/FIFO(First in First out))
큐도 스택과 마찬가지로 일상생활에 접목해 보면 쉽게 이해할 수 있습니다.
일상생활 속 맛집을 갔을 때
온라인에서 티켓을 구매할 때
저희는 줄을 섭니다.
아래와 같이 먼저 온 사람이 먼저 대기열을 빠져나가게 됩니다
이과 같은 자료구조를 Queue라고 합니다


LinkedList 의 Queue
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(value)
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가 업습니다"
del_node = self.head
self.head = self.head.next
return del_node.data
def peek(self):
if self.is_empty():
return "Queue가 없습니다"
return self.head.data
def is_empty(self):
return self.head is None
queue = Queue()
queue.enqueue(1) ## queue에 1의 값을 넣어줌
print(queue.peek()) ## 1
queue.enqueue(2) ## queue에 2의 값을 넣어줌
print(queue.peek()) ## 1 // 현재 queue에 1과 2가 있지만 1을 출력함 dequeue를 했을 때 빠져나갈 값 즉 가장 먼저 들어온 값
queue.enqueue(3)
print(queue.peek()) ## 1 // 마찬가지로 1이 출력됨
print(queue.dequeue()) ## 1 // queue를 빠져나간 값이 출력됨
print(queue.peek()) ## 2 // 1이 빠져나갔기 때문에 2가 출력됨
반응형
'자료구조 알고리즘' 카테고리의 다른 글
자료구조 알고리즘 힙이란 무엇인가? (0) | 2022.11.29 |
---|---|
자료구조 알고리즘 트리란 무엇인가? (0) | 2022.11.28 |
자료구조 알고리즘 Stack 스택이란? (0) | 2022.11.26 |
자료구조 알고리즘 이진탐색 (0) | 2022.11.26 |
자료구조 알고리즘 Array vs LinkedList LinkedList 사용법 (2) | 2022.11.23 |
댓글