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
}

运行结果

原文链接:segmentfault.com

上一篇:react组件---完全可控组件、非可控的组件与派生state
下一篇:TypeScript 运行时类型检查指南

相关推荐

官方社区

扫码加入 JavaScript 社区