티스토리 뷰
스택 (Stack)
- 스택은 박스 쌓기처럼 먼저 쌓은 박스를 마지막에 꺼낼 수 있다
- 이러한 구조를 선입 후출(First In Last Out / FILO) 혹은 후입 선출(Last In First Out) 구조라고 말한다
- 스택은 데이터를 일시적으로 저장하기위한 데이터 구조이다
- 스택에 데이터를 넣는 작업은 push, 스택에서 데이터를 꺼내는 작업은 pop이라고 말한다
- 박스쌓기와 같은 스택은, 데이터를 넣는 작업과 꺼내는 작업 모두 위쪽으로부터 수행된다
- 스택에서 푸시와 팝을 하는 위치를 꼭대기(top), 스택의 가장 아래부분은 바닥(Bottom)이라고 부른다
- 자바는 메서드를 호출하고 실행할 때 프로그램 내부에서는 스택을 사용한다
public class Test {
public static void main(String[] args) {
z();
}
static void x() {System.out.println("x");}
static void y() {System.out.println("y");}
static void z() {
x();
y();
}
}
예제 코드를 통해 Java 프로그램에서 메서드를 호출하고 실행할하는 과정을 살펴보자. 그림으로 표현하면 아래와 같다.
- 가장 먼저 main 메서드가 스택에 올라간다
- main 메서드에서 z 메서드를 호출하면, main메서드의 위에 z메서드가 올라간다
- z 메서드에서 또 다른 메서드인 x 메서드를 호출하므로, z 메서드의 위에 x 메서드가 push 된다
- x 메서드가 종료되면, x 메서드는 pop 된다
- 다시 z 메서드로 돌아가 다음 코드를 수행하는데, 이번에는 y 메서드가 z 메서드 위에 push 된다
- y 메서드가 종료되어 pop 되고, 다시 z 메서드로 돌아간다
- z 메서드도 종료되어 pop 되고, 호출 위치인 main 메서드로 돌아간다
- main 메서드 역시 종료되어 pop 된다
'Computer Science > 자료구조' 카테고리의 다른 글
힙(Heap) (0) | 2021.12.08 |
---|---|
큐 (Queue) (0) | 2021.12.08 |
이진 탐색(3) 이것이 코딩테스트다 - 실전 문제 (0) | 2021.12.03 |
이진 탐색(2) 이진 탐색 트리 (0) | 2021.12.02 |
이진 탐색(1) 순차 탐색, 이진 탐색 (0) | 2021.12.01 |