Topic

스택(Stack)과 큐(Queue)

JackerLab 2025. 3. 14. 15:06
728x90
반응형

개요

스택(Stack)과 큐(Queue)는 **자료구조(Data Structure)**에서 가장 기본적인 개념으로, 데이터를 저장하고 관리하는 방식이 다릅니다. 스택은 LIFO(Last In, First Out) 구조를 가지며, 큐는 FIFO(First In, First Out) 방식을 따릅니다. 이러한 구조적인 차이로 인해 각각의 데이터 구조는 다양한 프로그래밍 및 알고리즘 문제에서 중요한 역할을 합니다. 본 글에서는 스택과 큐의 개념, 차이점, 주요 연산 및 활용 사례를 살펴봅니다.


1. 스택(Stack)이란?

스택(Stack)은 후입선출(LIFO, Last In First Out) 방식으로 데이터를 저장하고 처리하는 자료구조입니다. 즉, 마지막에 들어온 데이터가 가장 먼저 제거되는 구조입니다.

1.1 스택의 주요 연산

연산 설명
push(삽입)스택의 최상단(Top)에 새로운 데이터를 추가
pop(삭제)스택의 최상단(Top)에 있는 데이터를 제거
peek(조회)스택의 최상단 데이터를 제거하지 않고 확인
isEmpty(공백 확인)스택이 비어 있는지 확인
isFull(포화 확인)스택이 가득 찼는지 확인 (배열 기반 스택의 경우 필요)

1.2 스택의 특징

후입선출(LIFO) 방식
재귀 호출 및 백트래킹(Backtracking) 문제 해결에 적합
연결 리스트(Linked List) 또는 배열(Array)로 구현 가능

1.3 스택의 활용 사례

사용 사례설명
함수 호출 스택(Call Stack)프로그램 실행 중 함수 호출 및 반환 관리
웹 브라우저의 뒤로 가기(Back Button)방문한 페이지를 스택에 저장하여 뒤로 가기 구현
괄호 검사(Parenthesis Matching)소스 코드에서 괄호 짝을 확인하는 알고리즘
DFS(Depth-First Search, 깊이 우선 탐색)그래프 탐색 알고리즘에서 사용

2. 큐(Queue)란?

큐(Queue)는 선입선출(FIFO, First In First Out) 방식으로 데이터를 저장하고 처리하는 자료구조입니다. 즉, 먼저 들어온 데이터가 먼저 나가는 구조입니다.

2.1 큐의 주요 연산

연산설명
enqueue(삽입)큐의 뒤(Rear)에 데이터를 추가
dequeue(삭제)큐의 앞(Front)에서 데이터를 제거
peek(조회)큐의 앞(Front)에 있는 데이터를 제거하지 않고 확인
isEmpty(공백 확인)큐가 비어 있는지 확인
isFull(포화 확인)큐가 가득 찼는지 확인 (배열 기반 큐의 경우 필요)

2.2 큐의 특징

선입선출(FIFO) 방식
데이터가 순차적으로 처리되는 환경에서 유용
연결 리스트(Linked List) 또는 배열(Array)로 구현 가능

2.3 큐의 활용 사례

사용 사례설명
프린터 작업 큐(Printer Queue)먼저 요청한 문서가 먼저 출력됨
프로세스 스케줄링(Process Scheduling)CPU 작업을 순차적으로 처리하는 스케줄러
네트워크 패킷 처리(Network Packet Processing)네트워크에서 데이터 패킷을 전송 순서대로 처리
BFS(Breadth-First Search, 너비 우선 탐색)그래프 탐색 알고리즘에서 사용

3. 스택과 큐의 차이점

비교 항목스택(Stack)큐(Queue)
데이터 저장 방식후입선출(LIFO)선입선출(FIFO)
삽입 연산push() - 최상단(Top)에 추가enqueue() - 뒤(Rear)에 추가
삭제 연산pop() - 최상단(Top)에서 제거dequeue() - 앞(Front)에서 제거
사용 사례함수 호출 스택, 웹 브라우저 뒤로 가기, DFS프린터 대기열, CPU 스케줄링, BFS
구현 방식배열 또는 연결 리스트배열 또는 연결 리스트

4. 확장된 큐의 개념: 원형 큐와 우선순위 큐

큐의 기본 개념을 확장하여 원형 큐(Circular Queue), 우선순위 큐(Priority Queue), 이중 큐(Deque) 등의 변형 구조가 존재합니다.

4.1 원형 큐(Circular Queue)

  • 큐의 크기를 고정하고, 배열의 처음과 끝을 연결하여 순환 구조로 관리
  • 큐가 가득 차도 비어 있는 공간이 남을 수 있는 문제를 해결

4.2 우선순위 큐(Priority Queue)

  • 데이터의 삽입 순서가 아니라 우선순위(Priority)에 따라 먼저 처리
  • 예: 운영체제의 프로세스 스케줄링, 네트워크 트래픽 관리

4.3 이중 큐(Deque, Double-Ended Queue)

  • 앞(Front)과 뒤(Rear)에서 삽입 및 삭제가 모두 가능한 큐
  • 예: 브라우저의 앞으로 가기/뒤로 가기 기능

5. 최신 트렌드 및 활용 사례

트렌드설명
스택과 큐의 병렬 처리 최적화멀티스레드 환경에서 락리스(Lock-free) 데이터 구조 연구 활성화
클라우드 기반 메시지 큐(Message Queue)RabbitMQ, Kafka 등을 활용한 대용량 데이터 처리
GPU 가속 큐 활용AI 및 데이터 과학에서 큐를 이용한 병렬 연산 최적화
블록체인 트랜잭션 처리트랜잭션 대기열을 FIFO 방식으로 관리하여 처리 속도 향상

6. 결론

스택(Stack)과 큐(Queue)는 프로그래밍과 알고리즘에서 필수적인 자료구조입니다. 스택은 후입선출(LIFO) 방식으로 함수 호출, 웹 브라우저 내비게이션, DFS에 활용되며, 큐는 선입선출(FIFO) 방식으로 프로세스 스케줄링, 네트워크 패킷 처리, BFS 등에 사용됩니다. 최신 기술에서는 GPU 가속, 클라우드 메시지 큐, 블록체인 트랜잭션 관리 등 다양한 분야에서 스택과 큐의 효율적인 활용이 중요해지고 있습니다.

728x90
반응형

'Topic' 카테고리의 다른 글

OS 스케줄링 알고리즘  (1) 2025.03.14
High Bandwidth Memory(HBM)  (0) 2025.03.14
프로세스 동기화(Process Synchronization)  (2) 2025.03.14
MMU (Memory Management Unit)  (0) 2025.03.14
개발 방법론  (0) 2025.03.14