1 분 소요

Stack(스택) and Queue(큐)

Stack과 Queue는 데이터를 저장하고 조작하기 위한 추상 자료 구조이다. 둘 다 일렬로 나열된 요소들을 다루며, 데이터의 삽입과 삭제를 지원한다. 그러나 데이터의 삽입과 삭제 방식, 그리고 데이터에 접근하는 방식에서 차이가 존재한다.

Stack:

  • 후입선출(LIFO, Last-In-First_Out, 엘리베이터 방식)방식을 따른다. 마지막에 삽입된 요소가 가장 먼저 삭제된다.
  • 스택에 요소를 삽입하는 작업을 “Push”라고 하고, 요소를 삭제하는 작업을 “pop”이라고 한다.
  • 가장 위에 있는 요소에만 접근이 가능하며, 이를 “top”이라고 한다.
  • 주요 용도: 함수 호출의 스택 프레임, 괄호 짝 맞추기, 뒤로가기 기능 등에 활용

Queue:

  • 선입선출(FIFO, First-In-First-Out, 빨대 방식)방식을 따른다. 먼저 삽입된 요소가 먼저 삭제된다.
  • 큐에 요소를 삽입하는 작업을 “enqueue”라고 하고, 요소를 삭제하는 작업을 “dequeue”라고 한다.
  • 가장 앞에 있는 요소에 접근할 수 있다. 이를 “front”라고 하고, 가장 뒤에 있는 요소에 접근할 수 있으며, 이를 “rear”라고 한다.
  • 주요 용도: 작업 대기열, 버퍼(buffer), 너비 우선 탐색(BFS)등에 활용 된다.

Stack과 Queue의 상황별 특징별 요약

  1. 데이터 삽입과 삭제 방식:
    • 스택 : 후입선출 방식을 따른다. 가장 최근에 삽입된 요소가 가장 먼저 삭제
    • 큐 : 선입선출 방식을 따른다. 먼저 삽입된 요소가 먼저 삭제된다.
  2. 데이터 접근 방식:
    • 스택 : 가장 위에 있는 요소에만 접근 가능하며, “top”이라 부른다.
    • 큐 : 가장 앞에 있는 요소에 접근할 수 있으며 이를 “front”라고 부르고, 가장 뒤에 있는 요소에도 접근할 수 있으며 이를 “rear”라 부른다.
  • 주요 사용처는 다음과 같다.
    • 스택 : 함수 호출의 스택 프레임, 괄호 짝 맞추기, 뒤로가기 기능 등에 주로 사용
    • 큐 : 작업 대기열, 버퍼(Buffer), 너비 우선 탐색(BFS)등에 주로 사용
  • 스택과 큐는 각각의 특징과 용도에 따라 사용되며, 프로그래밍에서 다양한 상황에 적용될 수 있는 유용한 자료 구조이다.

업데이트: