- 데이터를 후입선출, Last In First Out (LIFO) 원칙을 따르는 자료구조
- 프링글스를 떠올리면 되는데, 가장 처음 넣은 과자가 밑에 들어가고, 마지막에 넣은 과자가 맨 위에 위치한다, 꺼낼땐 맨 위에 있는 과자부터 꺼내게 되는 구조
특징
- LIFO 원칙 : 마지막에 들어간 요소가 가장 먼저 출력된다
- 접근 제한 : 구조상 데이터의 끝쪽에서만 추가, 제거가 가능하다, 끝쪽을 top이라 한다
장점과 단점
- 장점 : 구현이 간단하고, 데이터 추가, 삭제가 빠르다
- 단점 : 데이터 접근이 top에만 한정되어 있어, 특정 데이터에 접근할려면 top의 데이터들을 모두 제거해야 한다
사용처
- 프로그래밍 문제 같은 경우엔 괄호의 쌍을 검사할 때 활용된다
- 페이지 또는 명령어의 되돌리기, 이전 기능을 구현할 때 활용할 수 있다
예시 코드
class Stack {
constructor() {
this.elements = [];
}
push(item) {
this.elements.push(item);
}
pop() {
return this.elements.pop();
}
peek() {
const size = this.elements.length;
return this.elements[size - 1];
}
}
const stack = new Stack();
stack.push(1);
stack.push(3);
stack.push(5);
console.log(stack.peek());
console.log(stack.pop());
console.log(stack.peek());