큐 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 |