面试题 9:用两个栈实现队列
题目描述:
用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
解法一:模拟实现
思路:
- 两个栈分别为 stack1 和 stack2
- 插入操作:向 stack1 中插入
- 删除操作:如果 stack2 中没有元素,就将 stack1 中所有元素出栈再入栈到 stack2 中,当 stack2 中有元素后,从 stack2 中取 top 元素,再出栈,便将队列头元素删除了
class CQueue {
public:
CQueue() {}
void appendTail(int value) {
stack1.push(value);
}
int deleteHead() {
int deleteValue = -1;
if(stack2.size() <= 0)
{
while(stack1.size() > 0)
{
stack2.push(stack1.top());
stack1.pop();
}
}
if(stack2.size() > 0)
{
deleteValue = stack2.top();
stack2.pop();
}
return deleteValue;
}
private:
stack<int> stack1;
stack<int> stack2;
};