코딩일기

[자료구조] 4. 추상형 자료형 큐(queue) 이해하기(feat. codestates, self tutorial) 본문

Code/기타

[자료구조] 4. 추상형 자료형 큐(queue) 이해하기(feat. codestates, self tutorial)

daje 2021. 5. 16. 21:31
728x90
반응형

 

 

 

 

 

안녕하십니까 다제입니다. 

 

오늘은 큐에 대해서 알아보도록 하겠습니다. 

 

 


 

 

1. 큐(Queue) 정의 

큐(Queue) : 데이터간 순서를 약속하는 추상자료형 입니다.

데이터를 앞에서만 삭제하고 뒤에서만 삽입하는 것을 FIFO(First-in-First-out)이라고 합니다. 

 

 

 


 

 

2. 큐(Queue) 기능 

 -. 데이터간 순서 관계를 유지할 수 있어야한다. 

 -. 맨 뒤 데이터를 삽입 할 수 있어야 한다. 

 -. 맨 앞 데이터를 삭제 할 수 있어야 한다. 

 -. 맨 앞 데이터에 접근 할 수 있어야 한다. 

 

위에서 언급한 기능들에 대해서 코드로 직접 보도록 하겠습니다. 

사실 파이썬에서는 큐(Queue)를 라이브러리를 불러와서 바로 사용할 수 있습니다. 

먼저 어떻게 사용할 수 있는지 확인해보고, 큐(Queue)를 직접 구현까지 해보도록 하겠습니다. 

 

 

 


 

 

3. 큐(Queue) 코드 

# deque 불러오기 
from collections import deque

#------------------------------

# 큐 정의 
queue = deque()

#------------------------------

# 큐의 맨 끝에 데이터 삽입하기 
queue.append("홍길동1")
queue.append("홍길동2")
queue.append("홍길동3")
queue.append("홍길동4")
queue.append("홍길동5")

print(queue)

#------------------------------

# queue 접근 
print(queue[0])
print(queue[1])
print(queue[2])

#------------------------------

# queue 삭제
print(queue.popleft())
print(queue.popleft())

#------------------------------

# 삭제여부 확인 
print(queue)

#------------------------------

#------------------------------ 단위로 끊어서 구현해보시면 됩니다. 

혹시 몰라서 colab으로 해당 코드를 모두 구현해 놓았으니 참고하여 주시면 감사드리겠습니다. → 링크 

 

 

 


 

 

4. 큐(Queue) 구현 

class Queue:
    def __init__(self):
        self.front = None
        self.rear = None
    def enqueue(self, item):
        new_node = LinkedListNode(item)
        # 큐가 비어있는지 체크
        if self.rear is None:
            self.front = new_node
            self.rear = new_node
        else:
            # 새로운 노드를 rear 다음에 삽입
            self.rear.next = new_node
            # 새로운 노드를 rear 재할당
            self.rear = new_node
    def dequeue(self):
        # 큐가 비어있는지 체크
        if self.front is not None:
            # front값을 old front에 삽입
            old_front = self.front
            # old front 다음 값을 front값에 삽입
            self.front = old_front.next

        # 큐가 비어있는지 체크
        if self.front is None:
            # rear를 None으로 지정한다.
            self.rear = None

        return old_front

 

 

지금까지 큐(queue)에 대해서 알아보았습니다. 

 

궁금하신 사항이 있으시면 언제든지 코멘트 부탁드립니다. 

 

해당 글이 도움이 되셨다면 공감 부탁드립니다. 

 

감사합니다. 

더보기

기능: 연산이 무엇을 하는지

구현 : 연산의 기능을 어떻게 하는지 

 

추상화라는 것은 기능은 몰라도 구현이 가능하도록 하는 것을 추상화했다 라고 말한다. 

 

자료구조를 추상화한 것을 추상 자료형이라고 하며, 오직 기능만으로 데이터를 다룰 수 있도록 하는 것을 말함 

 

추상자료형을 왜 배우나?

추상자료형을 생각하면 코드의 흐름을 파악하는데 더 쉽다?

 

 

728x90
반응형