자료구조 - 큐

SeulKing·2022년 5월 10일
0
post-thumbnail

  • 줄을 서는 행위와 유사
  • 가장 먼저 넣은 데이터를 가장 먼저 꺼낼 수 있는 구조
    • 음식점에서 가장 먼저 줄을 선 사람이 제일 먼저 음식점에 입장하는 것과 동일
    • FIFO(First-In, First-Out) 또는 LILO(Last-In, Last-Out) 방식으로 스택과 꺼내는 순서가 반대
    • Queue(): 가장 일반적인 큐 자료 구조
      • LifoQueue(): 나중에 입력된 데이터가 먼저 출력되는 구조 (스택 구조라고 보면 됨)
      • PriorityQueue(): 데이터마다 우선순위를 넣어서, 우선순위가 높은 순으로 데이터 출력
* 출처: http://www.stoimen.com/blog/2012/06/05/computer-algorithms-stack-and-queue-data-structure/

용어

Enqueue: 큐에 데이터를 넣는 기능
Dequeue: 큐에서 데이터를 꺼내는 기능


🌟 Visualgo 사이트에서 직접 시연해보며 이해해볼 수 있음!
➡️ https://visualgo.net/en/list

파이썬 queue 라이브러리 활용해서 큐 자료 구조 사용하기

  • queue 라이브러리에는 다양한 큐 구조로 Queue(), LifoQueue(), PriorityQueue() 제공
  • Queue(): 가장 일반적인 큐 자료 구조
    • LifoQueue(): 나중에 입력된 데이터가 먼저 출력되는 구조 (스택 구조라고 보면 됨)
    • PriorityQueue(): 데이터마다 우선순위를 넣어서, 우선순위가 높은 순으로 데이터 출력

Queue()로 큐 만들기 (가장 일반적인 큐, FIFO(First-In, First-Out))

import queue
data_queue = queue.Queue()
data_queue.put("Sseul")
data_queue.put(1)

data_queue.qsize()
# qsize = 2

data_queue.get()
#먼저 넣은 Sseul 나옴!

참고: 어디에 큐가 많이 쓰이지 ??

  • 멀티 태스킹을 위한 프로세스 스케쥴링 방식을 구현하기 위해 많이 사용됨 (운영체제)

큐의 경우에는 장단점 보다는 (특별히 언급되는 장단점이 없음)
큐의 활용 예로 프로세스 스케쥴링 방식을 함께 이해하기!

JS로 큐 구현해보기!

-> 해보기!!

profile
프론트엔드 개발자 항상 뭘 하고있는 슬킹(seulki + ing)

0개의 댓글