栈 --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
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容