剑指 Offer 09. 用两个栈实现队列 - 力扣(LeetCode) (leetcode-cn.com)
class CQueue {
public:
stack<int> s1;
stack<int>s2;
CQueue() {
s1.push(-1);
s2.push(-1);
}
void appendTail(int value) {
s1.push(value);
}
int deleteHead() {
int res;
if(s2.top()!=-1){
res=s2.top();
s2.pop();
return res;
}
else{
while(s1.top()!=-1){
s2.push(s1.top());
s1.pop();
}
if(s2.top()!=-1){
res=s2.top();
s2.pop();
return res;
}
else return -1;
}
}
};
/**
* Your CQueue object will be instantiated and called as such:
* CQueue* obj = new CQueue();
* obj->appendTail(value);
* int param_2 = obj->deleteHead();
*/