본문 바로가기

CS/자료구조

1. 큐(Queue)

큐 queue

- 줄을 서는 것과 비슷

- 가장 먼저 넣은 데이터를 가장 먼저 꺼내는 구조 FIFO, LILO, 스택과 반대

- 멀티테스킹을 위한 프로세스 스케줄링 방식 구현에 많이 사용됨

 

- Enqueue : 큐에 데이터를 넣는 기능

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

 

파이썬 라이브러리

- Queue() : 가장 일반적인 큐 자료구조

- LifoQueue() : 나중에 입력된 데이터가 먼저 출력되는 구조

- PriorityQueue() : 데이터마다 우선순위를 넣어서, 우선순위가 높은 순으로 데이터 출력

 

 

Queue

import queue

data_queue = queue.Queue()
data_queue.put("str")
data_queue.put(123)

print(data_queue.qsize())
print(data_queue.get())

print(data_queue.qsize())
print(data_queue.get())
2
str
1
123

 

LifoQueue

import queue

data_queue = queue.LifoQueue()
data_queue.put("str")
data_queue.put(123)

print(data_queue.qsize())
print(data_queue.get())

print(data_queue.qsize())
print(data_queue.get())
2
123
1
str

 

PriorityQueue

import queue

data_queue = queue.PriorityQueue()
data_queue.put((10, "str"))
data_queue.put((15,123))
data_queue.put((5, "str1"))

print(data_queue.qsize())
print(data_queue.get())
print(data_queue.get())
3
(5, 'str1')
(10, 'str')

 

 

큐 구현

queue_list = list()

def enqueue(data):
    queue_list.append(data)
    
def dequeue():
    data = queue_list[0]
    del queue_list[0]     # del : list 원소 삭제
    return data

for index in range(10):
    enqueue(index)

print(len(queue_list))
print(dequeue())
print(len(queue_list))
print(dequeue())
10
0
9
1

 

'CS > 자료구조' 카테고리의 다른 글

5. 해쉬 테이블(Hash Table)  (0) 2021.04.06
4. 링크드 리스트(Linked List)  (0) 2021.04.06
3. 배열(Array)  (0) 2021.04.06
2. 스택 (Stack)  (0) 2020.12.30