class Solution
{
public:
void push(int node) {
stack2.push(node);
}
int pop() {
if(stack1.empty()){
while(!stack2.empty()) {
stack1.push(stack2.top());
stack2.pop();
}
}
int val = stack1.top();
stack1.pop();
return val;
}
private:
stack<int> stack1;
stack<int> stack2;
};
这题思路很简单,就是一个栈用来调换元素顺序,另一个当临时的缓存。当调换顺序的栈清空之后,才将缓存中的内容一次性压入调换顺序用的栈中。一定要一次性,否则顺序会乱。
栈是FILO(先入后出),队列是FIFO(先入先出),大概示意图是这样:
栈:凡是最先进去的都会被压到底部,而最后进去的,因为在最上面,所以也最先出来。
队列就是和排队一样了,最先排进队列的最先出来。