1. Stack
- 마지막으로 저장한 데이터가 처음으로 읽힌다.
- 영어로 하면 LIFO(Last In First Out)
- Stack에서 데이터 저장은
push
- 데이터를 읽어들이는 건
pop
다만 pop
은 읽어들임과 동시에 stack에서 삭제한다.
Stack의 활용
- 웹브라우저 방문기록(뒤로가기) 및 실행취소
- 미로찾기 알고리즘
→ 방문한 곳을 좌표로 표기하고, 다음 방문할 곳을 탐색한 후 Stack에 가능한 곳 전부를 push하고, 다시 pop 하면서 현재 경로로 변경하는 것을 반복
예시
// PancakeStack 클래스 정의
class PancakeStack {
constructor() {
// 빈 접시배열 선언
this.plate = [];
}
// push함수는 팬케이크를 쌓는(stack하는) 함수
push = pancake => this.plate.push(pancake);
// pop함수는 쌓인 팬케이크 중 가장 위쪽 팬케이크 1장을 먹는 함수
pop = () => {
if (this.plate.length === 0)
return "다 먹었슈";
else {
this.plate.pop();
}
}
// peak함수는 쌓인 팬케이크에서 가장 위쪽에 위치한 팬케이크가 무엇인지 알려주는 함수
peak = () => this.plate[this.plate.length-1];
// isEmpty함수는 빈 접시인지 아닌지 true/false로 알려주는 함수
isEmpty = () => this.plate.length === 0;
// printStack함수는 접시 위에 팬케이크가 몇 장 쌓여있는지 알려주는 함수
printStack = () => `접시 위에 팬케이크 ${this.plate.length}장이 쌓여 있습니다.`;
}