본문 바로가기
카테고리 없음

스택(Stack)이란 무엇인가?

by nono22 2023. 11. 29.

스택(Stack)이란 무엇인가?

스택(Stack)은 데이터를 일시적으로 저장하거나 꺼낼 수 있는 선형 자료 구조입니다. 스택은 후입선출(Last In, First Out, LIFO)이라는 원칙에 따라 동작합니다. 이는 마지막에 삽입된 데이터가 가장 먼저 삭제되는 구조를 의미합니다.

스택은 일상생활에서 쉽게 상상할 수 있는 상자 쌓기와 비슷한 개념을 가지고 있습니다. 상자를 한층 쌓을 때는 맨 위에 쌓지만, 삽입된 상자가 가장 먼저 제거됩니다. 마찬가지로 스택도 가장 최근에 삽입된 요소를 가장 먼저 삭제합니다.

스택은 주로 함수 호출, 괄호 짝 검사, 실행 취소/다시 실행 등에 활용됩니다. 예를 들어, 함수 호출 시 현재 수행 중인 함수의 정보를 스택에 저장하여 이전 함수로 복귀할 수 있습니다. 또한 괄호 짝 검사에서는 열린 괄호를 스택에 넣고 닫힌 괄호를 찾을 때마다 스택에서 해당 괄호를 제거하여 짝이 맞는지 검사합니다.

스택에는 아래와 같은 두 가지 기본 연산이 존재합니다:

  • push: 스택에 요소를 추가합니다. 이 연산은 스택의 맨 위에 요소를 삽입합니다.
  • pop: 스택의 맨 위에 있는 요소를 삭제하고 반환합니다. 삽입된 요소는 가장 먼저 삭제됩니다.

또한 스택에는 보조적인 연산도 존재할 수 있습니다:

  • top 또는 peek: 스택의 맨 위에 있는 요소를 반환하지만 삭제하지 않습니다.
  • isEmpty: 스택이 비어 있는지 확인합니다.

스택은 배열이나 연결 리스트로 구현될 수 있습니다. 배열로 구현할 경우 고정된 크기를 가지지만, 연결 리스트로 구현할 경우 동적으로 크기가 조정될 수 있습니다.

댓글