栈 --js实现

栈是一种遵从后进先出(LIFO)原则的有序集合,新添加的或待删除的元素都保存在栈的同一端,称为栈顶,另一端称为栈底。
生活中常见的例子就是,一堆盘子放在桌上,后放的盘子,先拿出来。

es5方法实现

function Stack(){
  let items=[]
  this.push=function(val){
  items.push(val)
  }
  this.pop=function(){
  return items.pop()
  }
  this.size=function(){
     return items.length
  }
  this.print=function(){
     console.log(items) 
 }
this.isEmpty=function(){
    return items.length===0 }
}

应用1:进制转换

1,10进制转2进制
num=10
num=num/2=5 ---0
num=num/2=2 ---1
num=num/2=1 ---0
num=num/2=0 ---1
10变成二进制为1010

function divideBy2(num){
var remStack=new Stack(),result='',rem
while(num>0){
rem=Math.floor(num%2)
remStack.push(rem)
num=Math.floor(num/2)
}
remStack.print()
while(!remStack.isEmpty()){
  result+=remStack.pop().toString()
}
return result
}

应用2:10进制转n(2,8,16)进制

function divideBy2(num,base){
var remStack=new Stack(),result='',rem,digits='0123456789ABCDEF'
while(num>0){
rem=Math.floor(num%base)
remStack.push(rem)
num=Math.floor(num/base)
}
remStack.print()
while(!remStack.isEmpty()){
  result+=digits[remStack.pop()]
}
return result
}

你可能感兴趣的:(栈 --js实现)