알고리즘

스택(stack)

교정이 2022. 3. 8. 13:34

스택

 

스택은 리스트의 한쪽 끝으로만 자료의 삽입, 삭제 작업이 이루어지는 자료 구조이다.

스택은 가장 나중에 삽입된 자료가 가장 먼저 삭제되는 후입선출(**LIFO**; Last In First Out) 방식으로 자료를 처리한다.

스택의 모든 기억 공간이 꽉 채워져 있는 상태에서 데이터가 삽입되면 Overflow가 발생하며, 더 이상 삭제할 데티어가 없는 상태에서 데이터를 삭제하면 Underflow가 발생한다.

 

 

기본 구조

  • 스택에 데이터를 삽입하는 작동 : push
  • 스택에 데이터를 추출하는 작동 : pop
  • 스택에 들어 있는 가장 위의 데이터(가장 마지막으로 삽입된 자료가 기억된 위치) : top
  • 스택의 가장 밑바닥: bottom

 

 

응용 분야

 

  • 부 프로그램 호출 시 복귀주소를 저장할 때.
  • 함수 호출의 순서 제어.
  • 인터럽트가 발생하여 복귀주소를 저장할 때.
  • Postfix Notation 으로 표현된 수식을 연산할 때.
  • 0 주소 지정방식 명령어의 자료 저장소.
  • 재귀(자기 자신, Recursive) 프로그램의 순서 제어.
  • 컴파일러를 이용한 언어 번역 시.

 

 

구현 예제

 

스택 구현 예제(C++)

# include <bits/stdc++.h>

using namespace std;

stack<int> s;

int main(void){
    s.push(5);
    s.push(2);
    s.push(3);
    s.push(7);
    s.pop();
    s.push(1);
    s.push(4);
    s.pop();
    // 스택의 최상단 원소부터 출력
    while (!s.empty()){
        cout << s.top() << ' ';
        s.pop();
    }
}

>>>    1 3 2 5

'알고리즘' 카테고리의 다른 글

큐(Queue)  (0) 2022.03.08
알고리즘 공부 출처  (0) 2022.03.08