https://leetcode.com/problems/implement-queue-using-stacks/description/
题目:要求用栈实现队列的基本操作。
思路:用一个栈即可。 比如压入的元素是1 2 3 4 。那么栈顶到栈底的元素就是 1 2 3 4。
实现上面的效果,改写Push函数即可(写成递归)。
比如当前栈顶到栈底的元素为:1 2 ,需要压入 3
暂存1 ,弹出1,暂存2,弹出2,压入3,压入2,压入1,最后栈为1 2 3。
class MyQueue {
public:
/** Initialize your data structure here. */
stack<int>s;
MyQueue() {
;
}
/** Push element x to the back of queue. */
void push(int x) {
if(s.size()==0)
{
s.push(x) ;return ;
}
int data=s.top(); //暂存
s.pop(); //弹出
push(x); //继续递归
s.push(data); //压入
return ;
}
/** Removes the element from in front of queue and returns that element. */
int pop() {
int temp=s.top();
s.pop();
return temp;
}
/** Get the front element. */
int peek() {
return s.top();
}
/** Returns whether the queue is empty. */
bool empty() {
return (s.size()==0);
}
};
/**
* 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();
*/