用两个栈实现队列
2015-09-29 20:30
197 查看
两个栈,一个称之为主栈,另外一个次栈。
在主栈直接进行Push操作。
次栈辅助进行Pop和Front操作。
栈直接使用STL中的Stack。
源代码:
NewQueue.h
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();
}
在主栈直接进行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();
}
相关文章推荐
- 一元回归分析r语言代码
- hdu 5455 Fang Fang(水题)
- manacher算法 O(n)求最长回文子串
- 导航地图5_系统搜索
- java基础
- java String 原理剖析
- Linux中的文件描述符与打开文件之间的关系
- 关于链表递归的断链问题
- 一张图看懂CSS cascade, specific, importance, inheritance
- 变量的作用域和生存周期
- 信息系统项目管理师2015年9月28日作业
- 使用反射机制实现对类中私有方法的调用
- 黑马程序员_java常用关键词
- Mac版QQ顶部黑边解决方法
- 20135231 —— 第三周任务总结报告
- Linq 语法
- JDBC 连接数据库
- android的Drawable资源
- 多态
- Ural 1036 Lucky Tickets