两个队列实现一个栈
//两队列实现一个栈
class NewStack
{
public:
void in(int c)
{
q1.push(c);
}
int pop()
{
int len1 = q1.size();
int c;
for(int i = 0;i < len1 - 1;i++)
{
q2.push(q1.front());
q1.pop();
}
c = q1.front();
q1.pop();
if(!q2.empty())
{
int len2 = q2.size();
for(int i = 0;i<len2-1;i++)
{
q1.push(q2.front());
q2.pop();
}
}
return c;
}
private:
queue<int> q1,q2;
};
两个栈实现一个队列
class NewQueue
{
public:
void in(int c)
{
s1.push(c);
}
int pop()
{
int c;
if(s2.empty())
{
while(!s1.empty())
{
s2.push(s1.top());
s1.pop();
}
}
c = s2.top();
s2.pop();
return c;
}
private:
stack<int> s1,s2;
};