//设计由两个栈组成的队列
//编写一个类,用两个栈实现队列,支持队列基本操作
//需要注意的是在是实现时TailSt不空时,不能对它Push操作,
#include <stack>
class myQueue
{
void Push(int x)
{
FrontSt.push(x);
}
int Top()
{
if (!TailSt.empty())
return TailSt.top();
else
{
while (!FrontSt.empty())
{
TailSt.push(FrontSt.top());
FrontSt.pop();
}
return TailSt.top();
}
}
void Pop()
{
if (TailSt.empty() && FrontSt.empty())
return;
if (TailSt.empty() && !FrontSt.empty())
{
while (!FrontSt.empty())
{
TailSt.push(FrontSt.top());
FrontSt.pop();
}
}
TailSt.pop();
}
private:
stack<int> FrontSt; //用于队尾
stack<int> TailSt; //用于队头
};
//编写一个类,用两个栈实现队列,支持队列基本操作
//需要注意的是在是实现时TailSt不空时,不能对它Push操作,
#include <stack>
class myQueue
{
void Push(int x)
{
FrontSt.push(x);
}
int Top()
{
if (!TailSt.empty())
return TailSt.top();
else
{
while (!FrontSt.empty())
{
TailSt.push(FrontSt.top());
FrontSt.pop();
}
return TailSt.top();
}
}
void Pop()
{
if (TailSt.empty() && FrontSt.empty())
return;
if (TailSt.empty() && !FrontSt.empty())
{
while (!FrontSt.empty())
{
TailSt.push(FrontSt.top());
FrontSt.pop();
}
}
TailSt.pop();
}
private:
stack<int> FrontSt; //用于队尾
stack<int> TailSt; //用于队头
};