5,用两个栈实现队列《剑指offer》
题目:
用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
思路:
栈的特性:先进后出
队列的特:先进先出
将栈1的内容全都弹出,然后推入栈2,弹出栈2 达到先进先出的功能;所以分为push栈 和 pop 栈
代码:
class Solution
{
public:
void push(int node) {
stack1.push(node);
}
int pop() {
int result;
if(stack2.empty()){
while(!stack1.empty()){
int node=stack1.top();
stack1.pop();
stack2.push(node);
}
}
result=stack2.top();
stack2.pop();
return result;
}
private:
stack<int> stack1;
stack<int> stack2;
};
拓展:
用两个队列实现一个栈:
思路:
两个队列都可以作为出栈的地方,但要保持一个栈为空;
出栈时:将其中有数据(n个)的队列,n-1个数据出队,然后入另一个队列,将最后一个数据出队,return返回;
入栈时:选择有数据的哪个队列入队,都为空入随便哪个队都可以

浙公网安备 33010602011771号