题目
使用两个栈模拟实现一个队列的功能。
思路
栈是“先进后出(FILO)”,队列是“先进先出(FIFO)”。栈的操作见:http://blog.youkuaiyun.com/u010902721/article/details/45748547
其中一个栈stack1固定用为push使用,另一个栈stack2固定用作pop使用。当stack2为空的时候,就将stack1中的元素逐个出栈,直接push到stack2中。这样就可以执行pop操作了。
代码
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 t = stack2.top();
stack2.pop();
return t;
}
private:
stack<int> stack1;
stack<int> stack2;
};
测试
测试的时候主要测元素从stack1向stack2转移的代码。push和pop操作交替执行,查看相应结果。经测试,上述代码没什么问题。
687

被折叠的 条评论
为什么被折叠?



