// (2021.2.23, 차재복, Cha Jae Bok, http://www.ktword.co.kr)
// 자바스크립트 내장 자료구조인 배열을 이용한 스택(LIFO) 구현
// 기본 지원 메소드 : push(), pop(), peek(), size(), isEmpty(), clear()
/* 구현 */
// 스택 클래스
class Stack {
// 생성자
constructor() {
this.items = []; // 빈 배열에 의한 스택 생성
}
// top 원소 추가
push(element) {
this.items.push(element);
}
// top 원소 제거
pop() {
return this.items.pop();
}
// top 원소 살피기(반환)
peek() {
return this.items[this.items.length - 1];
}
// 크기
size() {
return this.items.length;
}
// 비어있는지 여부
isEmpty() {
return this.items.length === 0;
}
// 내용 비우기
clear() {
this.items = [];
}
}
// 작성중 ...
/* 용법 */
/*
// 스택 인스턴스 생성
const stack = new Stack();
stack.isEmpty(); // => true
stack.push(3); // 3 => [3]
stack.push(7); // 7 => [3,7]
stack.push(9); // 9 => [3,7,9]
stack.peek(); // => 9
stack.size(); // => 3
stack.pop(); // [3,7] => 9
stack.pop(); // [3] => 7
stack.pop(); // [] => 3
stack.size(); // => 0
*/
// 작성중 ...
/* [참고문헌]
* Data Structures and Algorithms with JavaScript (2014) Michael McMillan
* Hands-on Data Structures and Algorithms with JavaScript (2018) Kashyap Mukkamala
* Learning JavaScript Data Structures and Algorithms (3rd 2018) Loiane Groner (*)
* JavaScript Data Structures and Algorithms (2019) Sammie Bae
* JavaScript Algorithms (2019) Oleksii Trekhleb,Sophia Shoemaker
*/