乐趣区

关于算法-数据结构:javascript算法与数据结构栈

一、栈的定义

一种后进先出的数据结构。

  1. 栈顶是个闭口,能够放入元素即 push(),移除元素即 pop()。
  2. 栈底关闭,不能操作元素。

二、栈的办法

三、js 实现栈的办法

// 创立一个函数结构器,用来创建对象
var Stack = function(){
  // 能够以数组模仿栈,首元素为栈底, 尾元素为栈顶
  var items = []
  // 入栈 从栈顶进入一个元素
  this.push = function(element){return items.push(element)
  }
  // 出栈 从栈顶移除一个元素
  this.pop = function(){return items.pop()
  }
  //peek 查看栈顶元素
  this.peek = function(){return items[items.length - 1]
  }
  // 查看栈有多少个元素
  this.size = function(){return items.length}
  // 判断栈是否为空
  this.isEmpty = function(){return items.length == 0}
  // 清空栈
  this.clear = function(){items = []
  }
  // 查看数组 
  this.getItems = function(){return items}
}

三、实例演战

  1. 将十进制转换为二进制

代码如下:

// 接下面代码
// 申明定义一个函数,用来十进制转换二进制![QQ 截图 20200730124609.png](/img/bVbKuix)
var transform = function(number){
// 创立一个 Stack 对象
  var dtb = new Stack()
  var string = ''
  // 将 number 除 2 失去的余数,放入到栈顶,也就是数组尾元素
  while(number > 0){
    var remainder =  number % 2 
    dtb.push(remainder) 
    number = Math.floor(number / 2)
  }
  // 判断栈是否为空, 不为空则移除栈顶元素。while(!dtb.isEmpty()){
  // 把移除的栈顶元素拼接成一个字符串
     string += dtb.pop()}
  return string
}

运行后果

退出移动版