#include<iostream>
#include<stack>
using namespace std; template <typename T>
void pushQueue(stack<T> &stack1, T t){
stack1.push(t);
} template<typename T>
T popQueue(stack<T> &stack1, stack<T> &stack2){
// 先将stack1倒到stack2中
while(!stack1.empty()){
stack2.push(stack1.top());
stack1.pop();
} // 然后取出stack2中的栈顶元素
T targetNum = stack2.top();
stack2.pop(); // 将stack2中的元素倒回到stack1中(为了下次再做操作(入队或者出对只对stack1操作))
while(!stack2.empty()){
stack1.push(stack2.top());
stack2.pop();
}
return targetNum;
} // 输出
template <typename T>
void printStack1(stack<T> &stack1){
while(!stack1.empty()){
cout<<stack1.top()<<" ";
stack1.pop();
}
}
int main(){ stack<int> stack1;
stack<int> stack2;
// 1.入队操作
pushQueue(stack1, 100);
pushQueue(stack1, 200); //2.出队操作
cout<<popQueue(stack1, stack2)<<endl;
// 3.打印验证
pushQueue(stack1, 300);
printStack1(stack1);
system("pause");
return 0;
}

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

04-14 06:18