由两个栈实现一个队列,支持队列的基本操作

题目

由两个栈实现一个队列,支持队列的基本操作(add,poll,peek)

注意点

1.由stackPush压入stackPop时,要将stackPush全部压入
2.出队时,如果stackPop有元素,不需要将stackPop压入

代码实现

let stackPush = []
let stackPop = []
//入队如果队列已满,抛出异常
function add(ele){
   stackPush.unshift(ele)
}
// poll:将首个元素从队列中弹出,如果队列是空的,就返回null
function poll(){
   if(stackPop[0]){
       return stackPop.shift()
   }else if(stackPush[0]){
       for (let index = 0; stackPush.length>0; index++) {
           let  ele = stackPush.shift()
           stackPop.unshift(ele)   
       }
       return stackPop.shift()
   }else{
       return null
   }
}

//查看首个元素,不会移除首个元素,如果队列是空的就返回null
function peek(){
   if(stackPop[0]){
       return stackPop[0]
   }else if(stackPush[0]){
       for (let index = 0; stackPush.length>0; index++) {
           let  ele = stackPush.shift()
           stackPop.unshift(ele)   
       }
       return stackPop[0]
   }else{
       return null
   }
}

简单测试

let arr1= [5,6,4,3,1]
for (let ind = 0; ind < arr1.length; ind++) {
    const ele = arr1[ind];
    add(ele)
}
console.log(stackPush)
console.log(poll())
console.log(peek())

代码下载地址

感谢

如果感觉对您的学习工作有帮助,请将它分享给需要的人,或者点赞鼓励一下,感谢支持
我还会不断更新。。。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值