栈——两个栈实现队列的pop和push
用两个栈实现队列
http://www.nowcoder.com/questionTerminal/54275ddae22f475981afa2244dd448c6
思路:
push:直接找一个stack装
pop:由于stack1本身的pop是弹出最后进入的,但是队列是弹出最先进入的,所以
找到另外一个stack2,将存储在stack1中的数据依次弹出,并存放到stack2,这样就将数据顺序调转方向,再将stack2弹栈即可。
class Solution
{
public:
void push(int node) {
stack1.push(node);
}
int pop() {
if(stack2.empty())
{
while(!stack1.empty())
{
stack2.push(stack1.top());
stack1.pop();
}
}
int ret = stack2.top();
stack2.pop();
return ret;
}
private:
stack<int> stack1;
stack<int> stack2;
};
查看7道真题和解析
