ABOUT ME

chanho Yoon
chyoon0512@gmail.com


깃허브


블로그 이사!

이 블로그로 이사했어요!!


Today
-
Yesterday
-
Total
-
  • Queue(큐) - python3
    Programming/자료구조 2020. 2. 25. 21:26
    반응형

     

    구조

    • 먼저 들어간 데이터가 먼저 나오는 선입선출 자료구조를 라고 한다.
      1. 예를 들어 먼저 줄을 선 사람이 먼저 물건을 사고 나오는 것과 같다 
      2. 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;

    결과

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

    이중 연결 리스트 - python3  (0) 2020.03.05
    단일 연결 리스트 - python3  (0) 2020.02.27
    Stack(스택) - python3  (0) 2020.02.26
    리스트 (List) 파이썬 배열  (0) 2020.02.24

    댓글

Designed by Tistory.