原题链接:232. 用栈实现队列
solution:
class MyQueue {
private:
stack<int> stin; //入队栈
stack<int> stout; //出队栈
public:
MyQueue() {
}
void push(int x) {
stin.push(x);
}
int pop() {
int res = 0;
if(!stout.empty()){ //如果出队栈不为空,则直接pop
res = stout.top();
stout.pop();
return res;
}
else if(!stin.empty()){ //当出堆栈为空,入队栈不为空更新出队栈
while(!stin.empty()){
stout.push(stin.top()); //入队栈顶元素压入出队栈
stin.pop();
}
}
res = stout.top();
stout.pop();
return res;
}
int peek() {
int res = 0;
if(!stout.empty()){
res = stout.top();
return res;
}
else if(!stin.empty()){ //当出堆栈为空,入队栈不为空更新出队栈
while(!stin.empty()){
stout.push(stin.top()); //入队栈顶元素压入出队栈
stin.pop();
}
}
res = stout.top();
return res;
}
bool empty() {
if(stin.empty() && stout.empty())
return true;
return false;
}
};
/**
* Your MyQueue object will be instantiated and called as such:
* MyQueue* obj = new MyQueue();
* obj->push(x);
* int param_2 = obj->pop();
* int param_3 = obj->peek();
* bool param_4 = obj->empty();
*/