Programming/자료구조
Queue(큐) - python3
Chanho.
2020. 2. 25. 21:26
반응형
큐 구조
- 먼저 들어간 데이터가 먼저 나오는 선입선출 자료구조를 큐라고 한다.
- 예를 들어 먼저 줄을 선 사람이 먼저 물건을 사고 나오는 것과 같다
- FIFO(First-In, First-Out) 방식으로 스택(Stack)과 반대
큐 용어
- put(insert) : 큐에 자료를 넣는 것
- get(delete) : 큐에서 자료를 꺼내는 것
- front(head) : 데이터를 get할 수 있는 위치를 가리킴
- rear(tail) : 데이터를 put할 수 있는 위치를 가리킴
큐 => 오버플로우(Overflow), 언더플로우(Underflow)
- 오버플로우 : 큐가 꽉 차있는 상태에서 데이터가 들어오면 오버플로우 발생 ( put을 할 수 없는 상태 )
- 언더플로우 : 오버플로우의 반대되는 개념으로 큐가 비어있을때 get을 하게되면 언더플로우 발생
대표적으로 큐가 쓰이는 곳
- 멀티태스킹을 위한 프로세스 스케줄링 방식을 구현하기 위해서 많이 사용되어짐
다양한 Queue 방식
- FIFO (First-In, First-Out) : 선입선출로 먼저 들어온 데이터가 가장 먼저 나감
- LIFO (Last-In, First-Out) : 후입선출로 가장 마지막에 들어온 데이터가 먼저 나감
- PriorityQueue (우선순위 부여되는 큐) : 우선순위가 높은 순으로 데이터가 먼저 나감
실습 : python3 , jupyter notebook
FIFO (First-In, First-Out)
LIFO (Last-In, First-Out)
PriorityQueue ( 우선순위 부여 )
Queue - python으로 직접 FIFO 구현해보기
q_list = list()
def put(data):
q_list.append(data)
print(f"현재 queue : {q_list}\n")
def get():
if len(q_list) > 0:
print(f"get한 데이터 값 : {q_list[0]}")
del q_list[0]
return q_list
else:
return "Underflow"
while(1):
select = input("1. put || 2. get : ")
if select == '1':
number = input("(put)데이터 입력 : ")
put(number)
elif select == '2':
print(f"현재 queue : {get()}\n")
else:
print("exit")
break;