利用两个栈实现队列的先进先出
图片演示:
1.将前四个元素压入栈1
2.将栈1元素出栈压入栈2
3.将栈2顶部元素出栈相当于出队
4.将栈2元素出栈压入栈1
5.将队列最后一个元素压入栈1
代码部分(c++实现):
class CQueue {
public:
stack<int> stack1;
stack<int> stack2;
CQueue() {
}
void appendTail(int value) {
stack1.push(value);
}
int deleteHead() {
if(stack1.empty()) return -1;
while(!stack1.empty())
{
int tmp=stack1.top();
stack1.pop();
stack2.push(tmp);
}
int res=stack2.top();
stack2.pop();
while(!stack2.empty())
{
int tmp=stack2.top();
stack2.pop();
stack1.push(tmp);
}
return res;
}
};