그림 2-2 | LIFO(Last In First Out)
class Stack {
constructor() {
this.items = [];
}
// 새로운 요소 추가
push(e) {
this.items.push(e);
}
// 맨 위 요소 제거 후 반환, 비어있으면 'null'
pop() {
if (this.isEmpty()) { // 스택이 비어있는지 확인
return null; // 비어있다면 'null' 반환
}
return this.items.pop(); // 맨 위 요소를 제거하고 반환
}
// 맨 위 요소 확인, 제거하지 않는다
peek() {
if (this.isEmpty()) { // 스택이 비어있는지 확인
return null; // 비어있다면 'null' 반환
}
return this.items[this.items.length - 1]; // 맨 위 요소 반환
}
// 스택이 비어있는지 확인
isEmpty() {
return this.items.length === 0;
}
// 요소의 수 반환
size() {
return this.items.length;
}
// 모든 요소 제거
clear() {
this.items = [];
}
}
let stack = new Stack();
stack.push(5); // 스택에 5 추가
stack.push(8); // 스택에 8 추가
console.log(stack.peek()); // 스택의 맨 위 요소 확인 (8)
stack.pop(); // 스택의 맨 위 요소 제거 (8 제거)
console.log(stack.peek()); // 스택의 맨 위 요소 확인 (5)