한 쪽 끝에서만 자료를 넣고 뺄 수 있는 LIFO(Last In First Out) 형식의 자료구조이다.
편의점 알바를 한다고 가정하자.
우리는 음료수나 과자 등을 채울 것이다.
채우다보면 가장 나중에 넣은 것이 가장 앞쪽에 있고, 가장 먼저 넣은 것은 가장 안쪽, 즉 마지막 순서에 있을 것이다.
손님들은 가장 나중에 넣은 것(Last)을 가장 먼저(First) 살 것이다.
이것이 stack 자료구조의 형식이다. (LIFO, Last In First Out)
stack에 넣는 것은 push(), 빼는 것은 pop()이다.
stack 자료구조에 1에서 5의 숫자를 넣고 빼는 과정
const stack = [];
// stack = []
for (let i = 1; i <= 5; i++) {
stack.push(i);
}
// 1 ~ 5를 차례대로 stack 배열에 대입
// stack = [1, 2, 3, 4, 5]
const output = []
for (let i = 1; i <= 5; i++) {
const pop = stack.pop()
output.push(pop)
}
// stack 배열에 5번 pop()을 해준다.
// stack = []
// output = [5, 4, 3, 2, 1]
이처럼 output 배열 즉, stack 배열에서 pop을 한 결과 기존 stack 배열에 담긴 순서와는 정반대로 나오는 것을 알 수 있다.