您的位置:首页 > 其它

用两个队列实现栈

2016-05-18 20:06 155 查看
#include <queue>
template <typename T>
class CStack
{
public:
void AddToTail(const T&);
T deleteHead();
private:
std::queue<T> queue1;
std::queue<T> queue2;
};

template <typename T>
void CStack<T>::AddToTail(const T& value)
{
queue1.push(value);
}

template <typename T>
T CStack<T>::deleteHead()
{
int flat = 0;
if (!queue1.empty())
{
while (queue1.size() > 1)
{
T& data = queue1.back();
queue2.push(data);
queue1.pop();
}
flat = 1;
}
else
{
while (queue2.size() > 1)
{
T& data = queue2.back();
queue1.push(data);
queue2.pop();
}
flat = 2;
}
T result;
if (flat == 1)
{
result = queue1.back();
queue1.pop();
}
else if (flat == 2)
{
result = queue2.back();
queue2.pop();
}
else
{
throw new exception("stack is empty");
}
return result;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: