【校招面试 之 剑指offer】第9-2题 用两个队列实现一个栈

时间:2023-08-17 22:49:02
#include<iostream>
#include<queue>
using namespace std;
// 对于出栈解决的思路是:将queue1的元素除了最后一个外全部放到queue2中,然后再pop出queue1的最后一个元素...
template<typename T>
void popStack(queue<T> &queue1, queue<T> &queue2){
if(queue1.size() == 0)
return;
// 将queue1中的元素除了最后一个元素外,依次入队queue2中
while(queue1.size() - 1){
queue2.push(queue1.front());
queue1.pop();
}
cout<<"出队元素为:"<<queue1.front()<<endl;
queue1.pop();
// 将queue2的元素放回到queue1中
while(queue2.size()){
queue1.push(queue2.front());
queue2.pop();
}
} template<typename T>
void printStack(queue<T> &queue1){
while(!queue1.empty()){
cout<<queue1.front()<<" ";
queue1.pop();
}
} int main(){ queue<int> queue1;
queue<int> queue2; // 1.实现入栈操作
queue1.push(100);
queue1.push(200);
queue1.push(300); // 2.实现出栈操作
popStack(queue1, queue2); queue1.push(400);
queue1.push(500); popStack(queue1, queue2); printStack(queue1); system("pause");
return 0;
}

运行结果:

【校招面试 之 剑指offer】第9-2题 用两个队列实现一个栈