17_7_18:两个栈实现一个队列。两个队列实现一个栈
来源:互联网 发布:淘宝中专毕业证复印件 编辑:程序博客网 时间:2024/05/17 16:15
题目:
1,使用两个栈实现一个队列
2,使用两个队列实现一个栈
1,使用两个栈实现一个队列
思路:
根据栈的FILO性质,将数据,全部存入第一个栈中;
再将第一个栈中数据全部放入第二个栈中;
这样,将数据从第二个栈中取出时,达到了FIFO效果。
template <typename T>class MyQueue{public: MyQueue() {} void Push(const T& data) { _s_1.push(data); } void Pop() { //如果:_s_2不为空。直接将_s_2中数据pop。 //如果:_2_2为空,则将_2_1中数据搬运到_s_2中 if (_s_2.empty()) { while (!_s_1.empty()) { T data = _s_1.top(); _s_1.pop(); _s_2.push(data); } } if (_s_2.empty()) //pop时,队列不能为空 assert(0); std::cout << _s_2.top() << " ";//打印pop的节点 _s_2.pop(); }private: std::stack<T> _s_1; std::stack<T> _s_2; };
2,使用两个队列实现一个栈
思路:
将队列_q_1中的元素只保留最后一个,其余全部搬移到_q_2中。
然后将,_q_1中保留的元素,出队列。
再将_q_2中元素搬移回_q_1中。
在整个过程中,_q_2只起中转作用
template <typename T>class MyStack{public: MyStack() {} void Push(const T& data) { _q_1.push(data); } void Pop() { //将队列_q_1中的元素只保留最后一个,其余全部搬移到_q_2中。 //然后将,_q_1中保留的元素,出队列。在将_q_2中元素搬移回_q_1中。 //在整个过程中,_q_2只起中转作用 if (_q_1.empty()) assert(0); while (_q_1.size() > 1) { T pTemp = _q_1.front(); _q_2.push(pTemp); _q_1.pop(); } std::cout << _q_1.front() << " "; //打印pop的节点 _q_1.pop(); while (!_q_2.empty()) { T pTemp = _q_2.front(); _q_2.pop(); _q_1.push(pTemp); } }private: std::queue<T> _q_1; std::queue<T> _q_2;};
题目中所需头文件以及测试用例
头文件:
#include <iostream>#include <cassert>#include <stack>#include <queue>
测试用例:
“`
“`int main()
{
std::cout << “用两个栈实现队列:0-9输出如下:” << std::endl;
MyQueue q;
for (int i = 0; i < 10; ++i)
{
q.Push(i);
}
for (int i = 0; i < 10; ++i)
{
q.Pop();
}
std::cout << std::endl;std::cout << "用两个队列实现栈:0-9输出如下:" << std::endl;MyStack<int> s;for (int i = 0; i < 10; ++i){ s.Push(i);}for (int i = 0; i < 10; ++i){ s.Pop();}system("pause");return 0;
}
阅读全文
1 0
- 17_7_18:两个栈实现一个队列。两个队列实现一个栈
- 两个队列实现一个栈&两个栈实现一个队列
- 两个栈实现一个队列-----两个队列实现一个栈
- 两个栈实现一个队列&&两个队列实现一个栈
- 两个栈实现一个队列 && 两个队列实现一个栈
- 两个栈实现一个队列,两个队列实现一个栈
- 两个栈实现一个队列/两个队列实现一个栈
- 两个栈实现一个队列&两个队列实现一个栈
- 两个队列实现一个栈&两个栈实现一个队列
- 两个队列实现一个栈 / 两个栈实现一个队列
- 两个栈实现一个队列,两个队列实现一个栈
- 两个栈实现一个队列&两个队列实现一个栈
- 两个栈实现一个队列&&两个队列实现一个栈
- 两个栈实现一个队列&两个队列实现一个栈
- 两个栈实现一个队列/两个队列实现一个栈
- 两个栈实现一个队列
- 两个栈实现一个队列
- 两个栈实现一个队列
- 建maven工程时插件出错org-apache.maven.plugins
- ten
- 使用异步图片轮播接口的类
- 如何在Windows单步调试Caffe
- Android系统五层架构
- 17_7_18:两个栈实现一个队列。两个队列实现一个栈
- 为什么要初始化CSS样式
- hihoCoder 最大权闭合子图
- 第一次写博客,不知道标题写什么好。
- linux下查找某个目录下包含某个字符串的文件
- keil里面骚气的printf
- 避免按钮重复点击
- 刷题2
- 插入法建立一个最大堆