728x90
드디어 큐(NOT TBZ)와 데이터 구조 공부를 제대로 해 본다....
학교 다닐 때 공부 좀 할걸....
Queue
선입선출(First In First Out) 기반의 자료 구조
데이터를 추가한 순서대로 제거할 수 있음
활용
- 비동기 메세징 (asynchronous messaging)
- 스트리밍 (streaming)
- 너비 우선 탐색(breath first search)
구현 방법
1. List
queue = [1, 2, 3]
queue.append(4)
queue.append(5)
print(queue)
# [1, 2, 3, 4, 5]
queue.pop(0)
# 1
queue.pop(0)
# 2
print(queue)
# [3, 4, 5]
- .append 뒤에서 데이터 추가
- .pop(0) 앞에서 데이터 제거
- .insert(index, data)앞에서 데이터 추가
- .pop 뒤에서 데이터 제거
2. Deque
collections 모듈의 deque 활용하는 방법
deque (double-ended queue): 데이터를 양방향으로 추가하거나 제거할 수 있는 자료 구조
from collections import deque
queue = deque([4, 5, 6]) #queue 선언
queue.append(7)
# [4, 5, 6, 7]
queue.append(8)
# [4, 5, 6, 7, 8]
queue.popleft()
4
queue.popleft()
5
queue
# deque([6, 7, 8])
- .popleft() 첫 번째 데이터 제거
- .appendleft(data) 맨 앞에 데이터 삽입
3 .Queue
queue 모듈의 Queue 클래스를 사용하는 방법
from queue import Queue
queue = Queue()
queue = put(4)
queue.put(5)
queue.put(6)
print(queue)
# [4, 5, 6]
queue.get()
4
queue.get()
5
queue.get()
6
- .put(data) 마지막에 데이터 추가
- .get() 첫 번째 데이터 제거
2학년 1학기 재학 당시 교수님께서 "전자과 학생들은 데이터 구조들의 헤더를 직접 코딩 할 수 있어야 할까요?" (아니요...) "당연히! 할 수 있어야 한다~" 라고 했던 기억이 새록새록 난다... 무려 7년 전임!!
그때 흘려들었던 것들을 이제서야 수습하고 있다.......
728x90
'자료구조' 카테고리의 다른 글
자료구조 Stack - 정의, 특성, 구현 (0) | 2023.09.06 |
---|---|
자료구조 Array - 이차원 배열 (0) | 2023.08.26 |
자료구조 Array - 검색, 선택 정렬, 카운팅 정렬 (0) | 2023.08.24 |
자료구조 Array - 알고리즘, 배열, 버블 정렬 (0) | 2023.08.18 |
데이터구조 힙(Heap) python (0) | 2023.05.17 |