用栈实现队列
一.问题描述:
用栈实现队列的基本操作。
基本思路:
1.入队:向enter栈中插入元素即可。
2.出队:当exit栈不为空时,直接pop即可;exit栈为空,enter栈不为空,将enter栈内的元素出栈并依此入栈到exit栈中,最后pop掉exit栈的栈顶元素即可。
3.返回队首元素:与出队操作相似,只是不需要将exit的栈顶元素出栈。
4.判断队列是否为空:两个栈均空时,该队列为空。
二.代码实现
class MyQueue {
public:
/** Initialize your data structure here. */
MyQueue() {
}
/** Push element x to the back of queue. */
void push(int x) {
enter.push(x);
}
/** Removes the element from in front of queue and returns that element. */
int pop() {
int ret=peek();
exit.pop();
return ret;
}
/** Get the front element. */
int peek() {
if(exit.empty()){
while(!enter.empty()){
exit.push(enter.top());
enter.pop();
}
}
return exit.top();
}
/** Returns whether the queue is empty. */
bool empty() {
return enter.empty()
&& exit.empty();
}
stack<int> enter;
stack<int> exit;
};