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;
    }
    
    }
    
    
    


  • 相关阅读:
    Node.js——fs常用API
    Node.js——Stream
    Node.js——Buffer
    Node.js——post方式提交的图片如何保存
    CSS——BFC
    Node.js——body方式提交数据
    Node.js——基本服务开启
    Node.js——url模块
    Node.js——render封装
    Node.js——开放静态资源原生写法
  • 原文地址:https://www.cnblogs.com/slankka/p/9158557.html
Copyright © 2011-2022 走看看