zoukankan      html  css  js  c++  java
  • 剑指offer-面试题9-用两个栈实现队列-栈和队列

    /*
    题目:
    	用两个栈实现一个队列。队列声明如下。
    */
    /*
    思路:
    	将值压入stack1,再从stack1弹出到stack2,则为先进先出。
    	appendTail时直接压入stack1即可,当stack2没有可用于deleteHead的元素时,将stack1的元素全部压入stack2。
    */
    template<typename T> class CQueue{
    	public:
    		CQueue(void)
    		~CQueue(void);
    		
    		void appendTail(const T& node);
    		T deleteHead();
    	
    	private:
    		stack<T> stack1;
    		stack<T> stack2;
    }
    
    template<typename T> void CQueue<T>::appendTail(const T& element){
    	stack1.push(element);
    }
    
    template<typename T> T CQueue<T>::deleteHead(){
    	if(stack1.empty() && stack2.empty()) throw new exceptions("queue is empty");
    	
    	if(stack2.size() == 0){
    		while(!stack1.empty){
    			T& data = stack1.top();
    			stack2.push(data);//可以用stack2.push(stack1.pop())吗?
    			stack1.pop();
    		}
    	}
    	T head = stack2.top();
    	stack2.pop();
    		
    

       

  • 相关阅读:
    测试中发现哪些bug
    兼容性测试
    接口测试基础
    Java基础概念
    Linux基础命令
    Selenium笔记
    常见软件测试类型分类
    性能测试类型
    网络基础题目
    常见测试方法
  • 原文地址:https://www.cnblogs.com/buaaZhhx/p/11822993.html
Copyright © 2011-2022 走看看