zoukankan      html  css  js  c++  java
  • C++两个队列实现一个栈

    C++两个队列实现一个栈

    /*
     * source.cpp
     *
     *  Created on: 2015年6月21日
     *      Author: codekiller
     */
    
    #include "iostream"
    #include "queue"
    #include <exception>
    #include "stdexcept"
    using namespace std;
    
    #define  should_not_reach_here
    
    
    
    template <typename T> class QStack{
    
    	public:
    		QStack(void){};
    		~QStack(void){};
    		void push(const T& element);
    		T pop();
    	private:
    		queue<T> queue1;
    		queue<T> queue2;
    
    };
    
    template <typename T> void QStack<T>::push(const T& element){
    
    	if(!queue2.empty())
    	queue2.push(element);
    	else if(!queue1.empty())
    		queue1.push(element);
    	else if(queue1.empty()&&queue2.empty())
    		queue1.push(element);
    
    }
    
    template <typename T> T QStack<T>::pop(){
    	if(queue1.size()==0&&queue2.size()==0)
    	{	throw underflow_error(string("QStack UnderFlow"));
    	//return 0;
    	}
    	if(queue1.size()==0){
    		while(queue2.size()>1){
    			queue1.push(queue2.front());
    			queue2.pop();
    		}
    		T & dataout=queue2.front();
    		queue2.pop();
    	    return dataout;
    	}else if(queue2.size()==0){
    		while(queue1.size()>1){
    			queue2.push(queue1.front());
    			queue1.pop();
    		}
    		T & dataout=queue1.front();
    		queue1.pop();
    		return dataout;
    	}
    
    	should_not_reach_here
    }
    
    int main(){
    
    	QStack<int> sstack;
    	sstack.push(1);
    	cout<<sstack.pop()<<endl;
    	sstack.push(100);
    try{
    	cout<<sstack.pop()<<endl;
    	cout<<sstack.pop()<<endl;
    	cout<<sstack.pop()<<endl;
    }
    catch(underflow_error &err){
    	cerr<<err.what()<<endl;
    }
    
    }
    
    
    


  • 相关阅读:
    Spring Boot初学
    Spring MVC必须知道的执行流程
    日志Log4j使用
    SpringMVC处理中文乱码
    Maven设置阿里云镜像
    Maven项目中配置文件导出问题
    使用Limit实现分页
    web项目中设置首页
    JVM 学习笔记记录
    Python内存管理&垃圾回收机制
  • 原文地址:https://www.cnblogs.com/slankka/p/9158557.html
Copyright © 2011-2022 走看看