剑指offer 用两个队列实现一个栈
题目描述
用两个队列来实现一个栈,完成队列的Push和Pop操作。 栈中的元素为int类型。
<分析>:
- 入栈:将元素进队列A
- 出栈:判断队列A中元素的个数是否为1,如果等于1,则出队列,否则将队列A中的元素依次出队列并放入队列B,直到队列A中的元素留下一个,然后队列A出队列,再把队列B中的元素出队列以此放入队列A中。
C++实现代码如下:
class A
{
public:
void push(int v);
int pop();
private:
queue<int> q1;
queue<int> q2;
}
A::push(int v)
{
q1.push(v);
}
int A::pop()
{
int front;
while(q1.size() > 1)
{
front = q1.front();
q2.push(front);
q1.pop();
}
if(q1.size() == 1)
{
front = q1.front();
q1.pop();
return front;
}
while(q2.size() > 1)
{
front = q2.front();
q1.push(front);
q2.pop();
}
if(q2.size() == 1)
{
front = q2.front();
q2.pop();
return front;
}
return -1;
}
还没有评论,来说两句吧...