欢迎光临
我们一直在努力

Stack built with Javascript

栈是一种遵从后进先出(LIFO,last-in-first-out)原则的有序集合。新添加的活待删除的元素都保存在栈的末尾,称作栈顶,另一端就叫栈底。在栈里,新元素都靠近栈顶,旧元素都接近栈底。

一个用来表示栈的类


class Stack {
  constructor () {
    this.items = []
  }
  /**
   * *********************************************************************************
   *                                                                                  *
   * 核心方法
   *                                                                                  *
   ***********************************************************************************/
  // 添加一个(或几个)新元素到栈顶
  push (...elements) {
    for (let elem of elements) {
      this.items.push(elem)
    }
  }
  // 移除栈顶的元素,同时返回被移除的元素
  pop () {
    return this.items.pop()
  }
  /**
   * *********************************************************************************
   *                                                                                  *
   * 辅助方法
   *                                                                                  *
   ***********************************************************************************/
  // 返回栈顶的元素,不对栈做任何修改(这个方法不会移除栈顶的元素,仅仅返回它)
  peek () {
    return this.items[this.items.length - 1]
  }
  // 如果栈里没有任何元素就返回true,否则返回false
  isEmpty () {
    return this.items.length === 0
  }
  // 移除栈里的所有元素
  clear () {
    this.items = []
  }
  // 返回栈里的元素个数,这个方法和数组的length属性类似
  size () {
    return items.length
  }
  // 打印栈里的所有元素
  print () {
    console.log(this.items.toString())
  }
}

Stack类的使用


// 十进制数转化成二进制、八进制或十六进制数
function baseConverter (decNumber, base = 2) {
  let remStack = new Stack()
  let rem
  let baseString = ''
  let digits = '0123456789ABCDEF'
  while (decNumber > 0) {
    rem = Math.floor(decNumber % base)
    remStack.push(rem)
    decNumber = Math.floor(decNumber / base)
  }
  while (!remStack.isEmpty()) {
    baseString += digits[remStack.pop()]
  }
  return baseString
}

参考资料

《学习JavaScript数据结构与算法》

赞(0) 打赏(金额可任意指定)
未经允许不得转载:峰间的云 » Stack built with Javascript
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

上海宝山顾村棉被加工店 专业加工新旧棉被

查看详情了解一下

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏