JavaScript & TypeScript

Data Structure - Stack [JavaScript]

꼰딩 2023. 8. 3. 00:57

후입선출 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 용도로 사용하여 마지막 요소를 조절하고 있습니다.
참조 링크에서 코드를 가져왔으며, 일부분을 수정했습니다.

참조: https://aiday.tistory.com/125