[JS] javaScript stack
01. Stack (스택)
- LIFO(Last In, First Out), 후입선출
- 가장 나중에 들어간 데이터가 제일 먼저 나오는 자료구조
- 데이터를 입력할 때는 push
- 데이터를 제거할 때는 pop
02. Class Stack 정의
class Stack {
// stack 생성자
constructor() {
this.array = {};
this.idx = 0;
}
// stack의 사이즈
// this.idx는 스택에 새롭게 추가될 아이템의 인덱스를 나타낸다
size() {
return this.idx;
}
// 가장 나중에 넣은 데이터를 확인 가능
peek() {
return this.array[this.idx - 1];
}
// stack에 아이템 추가
push(item) {
this.array[this.idx] = item;
this.idx += 1;
}
// stack에서 item을 제거한 후 해당 item을 반환
pop() {
// size가 0이라면 return
if (this.size() <= 0) {
return;
}
const result = this.array[this.idx - 1];
delete this.array[this.idx - 1];
this.idx -= 1;
return result;
}
}
03. 정의한 Stack 사용
let stack = new Stack();
stack.push(1); // array: [1], idx: 1
stack.push(2); // array: [1, 2], idx: 2
stack.push(3); // array: [1, 2, 3], idx: 3
console.log(stack.pop()) // 3, idx: 2
console.log(stack.pop()) // 2, idx: 1
console.log(stack.pop()) // 1, idx: 0
console.log(stack.pop()) // null
히히 잼따