Stack(스택)

    아래 그림 하나로 모든 것을 설명할 수 있는 것이 Stack 이다.


    스택은, 선형구조(LIFO) 즉, Last In First Out 기반의 자료구조이고,

    Push라는 것으로 자료를 저장하고, Pop이라는 연산으로 가장 최근에 저장된 자료를 사용, 삭제하게 된다.


    좀 더 쉽게 설명하자면, 접시를 들 수 있는데...

    접시를 계속 쌓이두면, 사용할 때도 가장 최근에 쌓아둔 접시를 사용하게 된다....





    그럼, 이 불공평(unfair)한 자료구조는 언제 사용하는 것일까??


    대표적인 사용출처는 "인터럽트 처리", "루틴의 복귀", "함수 호출할 때 인수 전달"를 할 때 쓸 수 있다.

    어떠한 작업을 할 때 현재의 상황에 우선순위의 작업을 등록하여, 처리하고 복귀할 때 스택만큼 좋은 자료구조는 없기 때문이다.


    스택에서 사용되는 연산을 정리하자면,


    1. top() : 스택의 맨 위에 있는 데이터 값을 반환

    2. push() : 스택에 데이터를 삽입

    3. pop() : 스택에서 데이터를 삭제하여 반환

    4. isEmpty() : 스택에 원소가 없으면 true, 있으면 false 값을 반환


    참고로, 스택과 반대되는 개념은 큐(Queue)이고, 큐는 LIFO가 아닌 FIFO(First In First Out) 구조이다.

    댓글

    Designed by JB FACTORY