实现使用两个堆栈队列 FIFO队列是一种数据结构(FIFO),后堆叠前进出的数据结构的(FILO)。 两个栈实现的最简单的方法就是排队:队列中的第一个推栈, 队列将数据顺序的第一个堆栈推入第二堆叠,然后叠加. 两个规则: 1)进队列,则直接压入第一个栈 2)出队列,若果第二个栈不为空。直接pop(),如过第二个栈为空,
则把第一个栈中的数据所有压入第二个栈(第一个栈此时为空)。
实际写代码时注意栈为空的情况。
代码:
#include#include class Queue{public: Queue() {} ~Queue() {} void push(int vData) { m_First.push(vData); } void pop() { if (m_Second.empty()) { if (m_First.empty()) { std::cout << "the queue is empty" << std::endl; return ; } move(m_First, m_Second); m_Second.pop(); } } int top() { if (m_Second.empty()) { if (m_First.empty()) { std::cout << "the queue is empty" << std::endl; return ; } move(m_First, m_Second); } return m_Second.top(); } int back() { if (m_First.empty()) { if (m_Second.empty()) { std::cout << "the queue is empty" << std::endl; return ; } move(m_Second, m_First); } return m_First.top(); }private: void move(std::stack & vL, std::stack & vR) { while (!vL.empty()) { vR.push(vL.top()); vL.pop(); } }private: std::stack m_First; std::stack m_Second;};
版权声明:本文博客原创文章,博客,未经同意,不得转载。