本篇博客主要阐释内容:
面试题: 使用两个队列模拟实现一个栈
#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就被删除了,此时