Stack, Queue, Priority Queue

svenskpotatis·2024년 8월 22일

Stack

  • LIFO(Last In, First Out) 자료구조
# Stack 구현 (리스트로)
stack = []

# 데이터 추가 (push)
stack.append(1)
stack.append(2)
stack.append(3)

# 데이터 제거 (pop)
print(stack.pop())  # 출력: 3
print(stack.pop())  # 출력: 2

# 현재 스택 상태
print(stack)  # 출력: [1]

Queue

  • FIFO(First In, First Out) 자료구조
from collections import deque

# Queue 구현 (deque로)
queue = deque()

# 데이터 추가 (enqueue)
queue.append(1)
queue.append(2)
queue.append(3)

# 데이터 제거 (dequeue)
print(queue.popleft())  # 출력: 1
print(queue.popleft())  # 출력: 2

# 현재 큐 상태
print(queue)  # 출력: deque([3])

Priority Queue

  • 높은 우선순위를 가진 데이터 먼저 처리
import heapq

# Priority Queue 구현 (리스트와 heapq로)
priority_queue = []

# 데이터 추가 (우선순위, 값 형태로 추가)
heapq.heappush(priority_queue, (2, 'B'))
heapq.heappush(priority_queue, (1, 'A'))
heapq.heappush(priority_queue, (3, 'C'))

# 데이터 제거 (우선순위가 높은 항목을 제거)
print(heapq.heappop(priority_queue))  # 출력: (1, 'A')
print(heapq.heappop(priority_queue))  # 출력: (2, 'B')

# 현재 우선순위 큐 상태
print(priority_queue)  # 출력: [(3, 'C')]

0개의 댓글