面试题之两个队列实现一个栈

本篇博客主要阐释内容:

面试题: 使用两个队列模拟实现一个栈

#include<iostream>
#include<queue>

//用两个队列实现一个栈
//这道题的目的在于让我们利用队列先进先出的原则实现栈“后进先出”的原则;
//所以这里只模仿实现 push,pop,和top三个操作;


  • 代码实现原理
    首先得了解队列的特点:先进先出。 既然是两个队列实现一个栈,很明显是让你通过俩个队列互相倒来倒去变成后进先出的栈!

怎么倒?

假设先放一组元素到队列q1;
q1: 1,2,3,4; //1 是队头
q2: //现在是空的!

接着需要执行Pop操作,本着后进先出的原则,肯定是要把 4 Pop掉;可是队列里的pop是每次删除一个队头元素
所以,q2就派上用场了,我们利用q2.push(q1.front())和q1.pop()交互操作把1,2,3放到q2中去;则:
q1;4;
q2;1,2,3;

这下可以pop掉4了,执行一次q1.pop();4就被删除了,此时

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值