Python/알고리즘_with Python

[자료구조] : 큐(Queue) - 선입선출, FIFO(First-In-First-Out)

샰롯 2022. 6. 5. 03:09
큐(Queue)-FIFO
- 먼저 넣은 데이터를 먼저 꺼내는 구조
    → 선입 선출 & 후입 후출
    → FIFO & LILO(First-In, First-Out & Last-In, Last-Out)

-  용어
    → Enqueue : 큐에 데이터를 넣는 기능
    → Dequeue : 큐에서 데이터를 꺼내는 기능

 

Enqueue : 
큐에 데이터가 들어갈 때

 Dequeue : 
큐에서 데이터가 나갈 때

 

 


Python 라이브러리
import queue
# queue 생성 
ifof_queue = queue.Queue()

 

put()을 사용하여 생성된 Queue에 데이터 넣기

# 생성된 queue에 데이터 넣기
ifof_queue.put('F')
ifof_queue.put('7')
ifof_queue.put(' ')
ifof_queue.put('p')
ifof_queue.put('r')
ifof_queue.put('o')
ifof_queue.put('j')
ifof_queue.put('e')
ifof_queue.put('c')
ifof_queue.put('t')

 

→ qsize()를 사용하여 생성된 Queue안의 데이터 수 확인

# qsize() 를 사용하여 queue안의 데이터 수 확인
ifof_queue.qsize()
10

 

get()를 사용하여 생성된 Queue안의 데이터 꺼내기

# queue에 입력된 데이터 꺼내기
ifof_queue.get()
'F'

 

→ get()를 사용하여 생성된 Queue안의 데이터 꺼내기

# queue에 입력된 데이터 꺼내기
ifof_queue.get()
'7'

 

→ get()를 사용하여 생성된 Queue안의 데이터 꺼내기

# queue에 입력된 데이터 꺼내기
ifof_queue.get()
' '

 

→ qsize()를 사용하여 Queue안에 남은 데이터 수 확인

# qsize() 를 사용하여 queue안의 데이터 수 확인
ifof_queue.qsize()
7

 

→ get()를 사용하여 생성된 Queue안의 데이터 꺼내기

# queue에 입력된 데이터 꺼내기
ifof_queue.get()
'p'

생략


→ get()를 사용하여 생성된 Queue안의 데이터 꺼내기

# queue에 입력된 데이터 꺼내기
ifof_queue.get()
't'

 

→ qsize()를 사용하여 Queue안에 남은 데이터 수 확인

# qsize() 를 사용하여 queue안의 데이터 수 확인
ifof_queue.qsize()
0

 

 


Python 구현

→ queue_FIFO클래스 선언

class queue_FIFO:
    
    def __init__(self):
        """
        --Queue를 리스트로 구현--
        비어있는 리스트 생성
        """
        self.list_ = []
    
    def enqueue(self, data):
        """
        --Queue에 data를 넣는 기능--
        data : 넣을 값 입력
        """
        self.list_.append(data)
        
    def dequeue(self):
        """
        --Queue에 data를 꺼내는 기능--
        처음 들어온값 바인딩 및 리스트에서 삭제
        """
        get = self.list_[0]
        del self.list_[0]
        return get
    
    def qsize(self):
        """
        --Queue data 갯수 출력--
        리스트안에 들어있는 요소 값 출력
        """
        return len(self.list_)

 

# queue 생성 
data = queue_FIFO()

 

engueue()를 사용하여 생성된 Queue에 데이터 넣기

# 생성된 queue에 데이터 넣기
data.enqueue('F')
data.enqueue('7')
data.enqueue(' ')
data.enqueue('p')
data.enqueue('r')
data.enqueue('o')
data.enqueue('j')
data.enqueue('e')
data.enqueue('c')
data.enqueue('t')

 

→ qsize()를 사용하여 생성된 Queue안의 데이터 수 확인

# qsize() 를 사용하여 queue안의 데이터 수 확인
data.qsize()
10

 

→ dequeue()를 사용하여 생성된 Queue안의 데이터 꺼내기

# queue에 입력된 데이터 꺼내기
data.dequeue()
'F'

 

→ dequeue()를 사용하여 생성된 Queue안의 데이터 꺼내기

# queue에 입력된 데이터 꺼내기
data.dequeue()
'7'

 

→ dequeue()를 사용하여 생성된 Queue안의 데이터 꺼내기

# queue에 입력된 데이터 꺼내기
data.dequeue()
' '

 

→ qsize()를 사용하여 Queue안에 남은 데이터 수 확인

# qsize() 를 사용하여 queue안의 데이터 수 확인
data.qsize()
7

 

→ dequeue()를 사용하여 생성된 Queue안의 데이터 꺼내기

# queue에 입력된 데이터 꺼내기
data.dequeue()
'p'

생략


→ get()를 사용하여 생성된 Queue안의 데이터 꺼내기

# queue에 입력된 데이터 꺼내기
data.dequeue()
't'

 

 

→ qsize()를 사용하여 Queue안에 남은 데이터 수 확인

# qsize() 를 사용하여 queue안의 데이터 수 확인
data.qsize()
0