使用一个stack会导致入队和出队的位置变换,使用两个stack时就再变一次,就变成了队列。插入时插入到stack2中,出队列时从stack1中出栈,若stack1中没有元素则将stack2中的元素压入到stack1中再继续从stack1中出栈即可。
class Solution
{
public:
void push(int node) {
stack2.push(node);
}
int pop() {
if(stack1.empty())
{
while(!stack2.empty())
{
stack1.push(stack2.top());
stack2.pop();
}
}
if(!stack1.empty())
{
int rst = stack1.top();
stack1.pop();
return rst;
}
//这里给一个默认值;
return -1;
}
private:
stack<int> stack1; //出队列;
stack<int> stack2; //入队列;
};
京公网安备 11010502036488号