同样,一个主队列,一个从队列。
从队列作数据中转用。
队列直接使用STL中的queue。
源代码:
NewStack.h
#include <queue>
class NewStack
{
public:
void Pop();
void Push(int data);
int Top();
bool Empty();
private:
std::queue<int> m_queue1; // 主队列
std::queue<int> m_queue2; // 从队列
}
NewStack.cpp
#include "NewStack.h"
void NewStack::Push(int data)
{
m_queue1.push(data);
}
int NewStack::Top()
{
return m_queue1.back();
}
void NewStack::Pop()
{
// 将主队列中的前面元素依次插入到从队列中
// 只留下队尾元素
while (m_queue1.size() > 1)
{
m_queue2.push(m_queue1.front());
m_queue1.pop();
}
m_queue1.pop();
// 将从队列中全部元素依次插入到主队列中
while (!m_queue2.empty())
{
m_queue1.push(m_queue2.front());
m_queue2.pop();
}
}
bool NewStack::Empty()
{
return m_queue1.empty();
}