스택 (Stack)
포스트
취소

스택 (Stack)

스택이란?

  • 데이터를 팬케이크를 쌓아올리듯이 데이터를 쌓아올린 형태로 자료를 구성하는 구현 방식
  • 데이터가 이동하는 입구와 출구가 같다.

스택의 특징

  • 같은 구조와 같은 크기의 데이터를 정해진 방향으로만 쌓을 수 있다.
  • top으로 정한 한 곳으로만 접근하도록 제한되어 있다.
  • top을 통해 들어온 데이터가 일정한 방향, 즉 아래에서 위로 차곡차곡 쌓이게 된다.
  • top은 삽입과 삭제가 일어나는 위치로, 현재 스택의 가장 위에 있는 데이터 위치를 가리킨다.
  • 새로운 데이터가 쌓이면 해당 데이터가 가장 위에 있으므로 해당 데이터가 top이 된다.
  • 데이터를 삭제할 때는 가장 위에 있는 top부터 삭제할 수 있다.
  • 데이터의 삽입·삭제 연산을 1개씩만 할 수 있다.
  • 후입선출 (LIFO, Last-In-First-Out)
    • 가장 마지막에 삽입된 데이터가 가장 먼저 삭제되는 특징
    • 스택의 동작 구조다.
    • 후입 선출을 뒤집어서 선입후출(FILO, First-In-Last-Out)이라고 부르기도 한다.
  • 스택의 연산
    • push
      • 스택에서 top을 통해 새로운 데이터를 삽입하는 연산
    • pop
      • 스택에서 top을 통해 마지막 데이터를 삭제하는 연산

구현하기

  • Java에서는 스택을 구현하는 Stack 클래스가 존재한다.
  • 다만 스택의 기본 이론과 다르게 데이터를 중간에 삽입하거나 삭제할 수도 있으며,
    그런 연산 자체도 데이터 1건씩만 하는 게 아닌 여러 건씩 할 수 있다.
  • 이유는 Java의 Stack 클래스에 대하여 상속 및 구현된 클래스들을 살펴보면 목록에 대한 클래스들이 포함되어 있기 떄문이다.
  • 예시
    • Stack<String> stackStr = new Stack<>();
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.