用两个栈实现队列

来源:互联网 发布:数据科学 r语言实战 编辑:程序博客网 时间:2024/05/21 03:19

两个栈,一个称之为主栈,另外一个次栈。

在主栈直接进行Push操作。

次栈辅助进行Pop和Front操作。

栈直接使用STL中的Stack。


源代码:

NewQueue.h

#include <stack>class NewQueue{public:void Push(int data);void Pop();int Front();int Back();bool Empty();private:std::stack<int> m_stack1; // 主栈std::stack<int> m_stack2; // 从栈}

NewQueue.cpp

#include "NewQueue.h"void NewQueue::Push(int data){m_stack1.push(data);}void NewQueue::Pop(){// 将主栈中数据全部放入次栈while (!m_stack1.empty()){m_stack2.push(m_stack1.top());m_stack1.pop();}m_stack2.pop();// 将数据从次栈中还原到到主栈while (!m_stack2.empty()){m_stack1.push(m_stack1.top());m_stack2.pop();}}int NewQueue::Front(){// 将主栈中数据全部放入次栈while (!m_stack1.empty()){m_stack2.push(m_stack1.top());m_stack1.pop();}int data = m_stack2.top();// 将数据从次栈中还原到到主栈while (!m_stack2.empty()){m_stack1.push(m_stack2.top());m_stack2.pop();}return data;}int NewQueue::Back(){return m_stack1.top();}bool NewQueue::Empty(){return m_stack1.empty();}







0 0