用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。js代码已通过

本文介绍了一种使用两个栈来模拟队列的数据结构的方法。在JS中,当进行Push操作时,元素被压入栈1;在Pop操作时,首先将栈1的所有元素转移到栈2,然后从栈2弹出顶部元素,以此实现队列的先进先出特性。最后,将剩余的元素从栈2回推到栈1,保持队列状态。
摘要由CSDN通过智能技术生成

算法题目

用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。

思路

  • 假设推入1,2,3,4这几个元素进栈,那么栈顶元素是4,栈底是1
  • 将stack1的所有元素推到stack2中,此时stack2中的栈顶是1,栈底是4。
  • 此时将stack2的1 pop出来,刚好就满足了队列元素的先进先出的特性
  • 最后将stack2的退回到stack1

js代码


var stack1 = []
var stack2 = []

function push(node)
{
    // write code here
//     假设推入1,2,3,4这几个元素进栈,那么栈顶元素是4,栈底是1
    if(node){
        stack1.push(node)
    }
    return stack1
}
function pop()
{
    // write code here
// 将stack1的所有元素推到stack2中,此时stack2中的栈顶是1,栈底是4。
    while(stack1.length>0){
      debugger
        stack2.push(stack1.pop())
//         console.log(stack1,stack2);
    }         
//     此时将stack2的1 pop出来,刚好就满足了队列元素的先进先出的特性
    var res = stack2.pop()
//     最后将stack2的退回到stack1
    while(stack2.length>0){
        stack1.push(stack2.pop())
    }
    return res
    
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值