Dionysus

[자료구조🧬] 큐 (Queue) 본문

CS 및 알고리즘 공부/CS

[자료구조🧬] 큐 (Queue)

Gogumiing 2024. 8. 13. 09:16

📌 큐 (Queue)

스택(stack)과 마찬가지로 삽입과 삭제의 위치가 제한적인 자료구조

  • FIFO(First In First Out) 구조이다.

 


 

✔ 큐 사용을 위해 필요한 주요 연산

```
createQueue() : 공백 큐 생성
enQueue(A) : 원소 A를 삽입
enQueue(B) : 원소 B를 삽입
deQueue(): 원소 반환/삭제
enQueue(C) : 원소 C 삽입
deQueue(): 원소 반환/삭제
deQueue(): 원소 반환/삭제
```

 


 

🚀 클래스로 구현한 큐

# 요소의 정보를 저장하기 위한 클래스
class Node:
    # 데이터를 저장할 변수
    # 다음 요소를 가리키기 위한 변수
    def __init__(self, value):
        self.value = value
        self.next = None
    

    def __str__(self):
        return str(self.value)


class MyQueue:
    # 상태값 front와 rear를 가짐
    # enQueue(), deQueue(), Qpeek()을 멤버 메서드로 가짐
    # Qpeek()은 요소를 삭제하지 않고 가장 앞 요소를 반환함
    def __init__(self):
        self.front = None
        self.rear = None


    def enQueue(self, item):
        new_node = Node(item)

        if self.front is None:
            self.front = new_node
            self.rear = new_node
        else:
            self.rear.next = new_node
            self.rear = new_node
    

    def deQueue(self):
        prev = self.front
        self.front = prev.next
        return prev        
    
    
queue = MyQueue()
queue.enQueue(5)
queue.enQueue(4)
queue.enQueue(3)
queue.enQueue(2)
queue.enQueue(1)

print(queue.deQueue(), end = ' ')
print(queue.deQueue(), end = ' ')
print(queue.deQueue(), end = ' ')
print(queue.deQueue(), end = ' ')
print(queue.deQueue(), end = ' ')


# 출력
5 4 3 2 1