用两个栈实现队列——JavaScript

用两个栈实现队列

 //用两个栈来实现队列
 //进1234,出1234
 //push方法直接进instack即可
 //pop方法要将4321全部放入outstack,然后outstack.pop()
 //此时分为两种情况 1.若outstack非空,直接pop 2.若outstack为空,再将instack全部放入outstack
 //时间复杂度O(n)(看循环)   空间复杂度O(n)(看数组,看递归)
 var instack=[]
 var outstack=[]
 function Push(node){
     return instack.push(node)
 }
 function Pop(){
     if(outstack.length!==0){
         return outstack.pop()
     }else{
         while(instack.length){
             outstack.push(instack.pop())
         }
         return outstack.pop()
     }
 }

用两个队列实现栈(扩展)

 // 两个队列实现栈(push shift)
 //1234进入 ,4321出
 //入栈:进入非空队列,若都为空,默认q1
 //出栈:将非空队列的元素(除最后一个)全部放入空队列,只剩最后一个,出队即可
  var q1=[]
  var q2=[]
   function inqueue(node){
       if(!q1.length){
           q2.push(node)
       }else{
           q1.push(node)
       }
   }
   function outqueue(){
       if(!q1.length){
           while(q2.length-1){
               q1.push(q2.shift())
           }
           return q2.shift()
       }else if(!q2.length){
           while(q1.length-1){
               q2.push(q1.shift())
           }
           return q1.shift()
       }
   }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值