자료구조

자료구조 - 선형구조 - 큐(Queue), 스택(Stack), 덱(Deque)

Seon Dev Notes 2025. 3. 2. 02:38

오늘은 많은 자료구조 중 선형구조 Queue, Stack, Deque에 대해 알아보도록 하겠습니다.

선형구조(Linear Structure)

선형구조란 자료를 구성하는 원소들을 하나씩 순차적으로 나열시킨 형태이다.

  • 데이터 간에 순서가 있고 논리적으로 이어져 있는 구조를 의미한다.

1. 큐(Queue)

큐는 선입선출(FIFO, First In First Out) 원칙을 따르는 자료구조. 데이터가 먼저 들어온 순서대로 처리된.

선형 큐(Linear Queue)

  • 특징: 일반적인 큐로, 데이터를 한 방향으로만 삽입하고 제거한다.
  • 문제점: 삭제된 공간을 재사용할 수 없어 비효율적이다.

원형 큐(Circular Queue)

  • 특징: 선형 큐의 문제를 해결하기 위해 고안된 큐로, 마지막 위치와 처음 위치를 연결하여 원형 형태로 만든다.
  • 장점: 공간을 효율적으로 활용할 수 있다.
  • 사용 사례: 운영체제의 프로세스 스케줄링 등

※ 핵심 원리

  • Enqueue: 큐의 뒤쪽 (Rear)에 새로운 데이터를 추가하는 것이다.
  • Dequeue: 큐의 앞쪽 (Front)에서 데이터를 제거하는 것이다.

사용할 때 (활용 사례)

- 너비 우선 탐색 (BFS, Breadth-First Search)
- 프린터의 출력 처리
- 우선순위가 같은 작업 예약 (인쇄 대기열)

주의할 점: 큐가 꽉 찼는데 데이터를 넣으려고 하거나, 큐가 비었는데 데이터를 꺼내려고 하면 에러가 발생할 수 있다.

2. 스택(Stack)

스택(Stack)LIFO (Last In First Out, 후입선출) 원칙을 따르는 자료구조이다. 가장 늦게 들어온 데이터가 가장 먼저 나가는 구조이다.

※ 핵심 원리

  • Push: 스택의 맨 위 (Top)에 새로운 데이터를 추가하는 것이다.
  • Pop: 스택의 맨 위 (Top)에 있는 데이터를 제거하는 것이다.
  • Peek: 스택의 맨위(Top)에 있는 원소를 반환한다

사용할 때 (활용 사례)

  • 함수 호출 스택: 프로그램 실행 시 함수 호출 순서를 관리합니다. 함수가 호출될 때마다 스택에 쌓이고, 실행이 끝나면 스택에서 제거되는 방식으로 동작합니다.
  • 웹 브라우저 방문 기록: 뒤로 가기 버튼을 누르면 가장 최근에 방문한 페이지부터 돌아가죠?
  • 수식 계산: 괄호 안의 수식을 먼저 계산하는 등 연산자 우선순위를 처리할 때 유용합니다.
  • 주의할 점: 스택이 비어있는데 데이터를 꺼내려고 하면 에러가 발생할 수 있다.

3. 덱(Deque)

덱(Deque, Double-Ended Queue)은 큐와 스택의 장점을 합쳐놓은 자료구조이다. 양쪽 끝에서 데이터를 넣고 뺄 수 있기 때문에, 큐와 스택보다 훨씬 더 유연하게 데이터를 관리할 수 있다는 장점이 있다.

※ 핵심 원리

  • addFront / removeFront: 덱의 앞 (Front)에서 데이터를 추가/삭제한다.
  • addRear / removeRear: 덱의 뒤 (Rear)에서 데이터를 추가/삭제한다.

사용할 때 (활용 사례)

  • 스택과 큐의 조합
  • 회문 검사
    주의할 점: 덱을 사용할 때는 삽입과 삭제 연산이 양쪽에서 가능하므로, 어느 방향에서 연산이 이루어지는지 명확하게 정의해야 한다. 또한, 덱의 크기가 제한된 경우, 공간이 가득 찼을 때 새로운 데이터를 추가하려고 하면 오류가 발생할 수 있다.

핵심 요약

자료구조 특징 언제 사용할까?
큐(Queue) FIFO (First In First Out, 선입선출) 너비 우선 탐색 (BFS), 프린터 출력 처리, 우선순위가 같은 작업 예약 (인쇄 대기열)
스택(Stack) LIFO (Last In First Out, 후입선출) 함수 호출 스택, 웹 브라우저 방문 기록, 수식 계산
덱(Deque) 양쪽 끝에서 삽입/삭제 가능 스택과 큐의 조합이 필요할 때, 회문 검사