如何用两个栈实现一个队列
来源:互联网 发布:知乐小说作品集百度云 编辑:程序博客网 时间:2024/06/05 04:28
问题:如何用两个栈实现一个对列的功能?
思路:从栈A入队列,从栈B出队列。
队列的2个最重要的操作,入队列,出队列。
入队列:从栈A入队列。
出队列:分2中情况
1. 如何栈B不为空,直接弹出。、
2. 如何栈B为空,将栈A中的数据全部弹入栈B中,再从栈B弹出数据
代码实现如下:
// QueueByStack.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include<stack>#include<iostream>using namespace std;
template<class T>class Queue{public: Queue(){} virtual ~Queue(){} void push(const T& e){ m_stackA.push(e); } void pop(){ if(m_stackB.empty()){ while(!m_stackA.empty()){ m_stackB.push(m_stackA.top()); m_stackA.pop(); } } m_stackB.pop(); } size_t size() const{ return m_stackA.size()+m_stackB.size(); } bool empty(){ return m_stackA.empty()&&m_stackB.empty(); } T top(){ if(m_stackB.empty()){ while(!m_stackA.empty()){ m_stackB.push(m_stackA.top()); m_stackA.pop(); } } return m_stackB.top(); }protected: stack<T> m_stackA; //栈A stack<T> m_stackB; //栈B};
int _tmain(int argc, _TCHAR* argv[]){ Queue<int> m_queue; m_queue.push(1); m_queue.push(2); cout<<m_queue.top(); return 0;}
阅读全文
0 0
- 如何用两个栈实现一个队列
- 如何用两个栈实现一个队列
- 如何用两个栈实现一个队列
- 如何用两个栈实现一个队列
- 如何用两个栈实现一个队列,以及用两个队列实现一个栈
- 如何用两个栈视线一个队列
- 如何用两个栈形成一个队列
- Java:如何用两个队列实现栈
- 如何用一个栈实现队列?
- 数据结构:栈和列之如何用两个队列实现一个栈?两个栈实现一个队列?
- 如何用两个队列实现一个栈,并分析有关栈操作的运行时间。
- 如何用两个栈实现一个队列(思路)(欢迎提意见)
- 如何用两个栈来实现队列的方法
- 如何用两个栈实现队列的功能
- 如何用两个栈来实现队列的方法
- 如何用两个栈模拟队列操作
- 如何用栈实现队列的功能
- c++ 如何用一个函数实现两个字符串的比较
- jQuery 选择器 first-child和first-of-type、 last-child和last-of-type的区别
- 两个栈实现一个队列
- AutoLayout 汇总
- 关于魅族手机html5与mui+HBuilder的链接
- laravel 获取上一次insert语句的主键id
- 如何用两个栈实现一个队列
- 算法训练 字符串变换
- JAVA web 项目启动报 Caused by: java.util.zip.ZipException: invalid LOC header (bad signature)
- Java读取文件完整代码
- C# 彻底删除文件或目录,不可恢复,文件清除工具
- 零基础学python途中遇到的这些小问题——小更新笔记
- 判断app是否运行于前台的两个方法
- CSLader加载plist
- linux命令下载和安装