후입선출 Last In First Out
class Stack {
storage
size
constructor() {
this.storage = {}
this.size = 0
}
push(data) {
this.storage[++this.size] = data
}
pop() {
if (this.size < 1) {
console.error(`stack이 비어있습니다. - size: ${this.size}`)
return null
}
const result = this.storage[this.size]
delete this.storage[this.size--]
return result
}
top() {
if (this.size < 1) {
console.error(`stack이 비어있습니다. - size: ${this.size}`)
return null
}
return this.storage[this.size]
}
}
const stack = new Stack()
stack.push('Apple')
stack.push('Banana')
stack.push('Carrot')
console.log(JSON.stringify(stack, null, 2))
console.log(stack.pop())
console.log(stack.pop())
console.log(stack.pop())
console.log(stack.pop())
console.log(stack.pop())
console.log(stack.pop())
console.log(JSON.stringify(stack, null, 2))
size를 index 용도로 사용하여 마지막 요소를 조절하고 있습니다.
참조 링크에서 코드를 가져왔으며, 일부분을 수정했습니다.
'JavaScript & TypeScript' 카테고리의 다른 글
[prisma] prisma 에러 - Original error: Error code: P1010 (0) | 2023.06.18 |
---|---|
[express.js] 아주 간단한 express.js, singleton, typescript, prisma+mysql, mongoose+mongodb, oop (0) | 2023.06.18 |