• 用两个栈实现队列


    题目是就用两个栈来实现队列....

    思路还是比较清晰的,所以直接上代码.......

    //用两个栈实现队列
    #include<iostream>
    #include<stack>
    using namespace std;
    template <typename T> class MyQueue{
    public:
    	MyQueue(){};
    	T pop();
    	void push(T);
    	bool empty();
    private:
    	stack<T> stack1;    //用于入队和入队
    	stack<T> stack2;	//用于出队
    };
    template<typename T> T MyQueue<T>::pop(){        //出队
    	T temp;
    	if(!stack2.empty()){temp=stack2.top();stack2.pop();}
    	else{
    		if(stack1.empty()) {cout<<"error"<<endl;return 0;}
    		else{
    			while(!stack1.empty()){
    				stack2.push(stack1.top());
    				stack1.pop();
    			}
    			temp=stack2.top();
    			stack2.pop();
    		}
    	}
    	return temp;
    }
    template<typename T> void MyQueue<T>::push(T t){ //入队
    	stack1.push(t);
    	return;
    }
    template<typename T> bool MyQueue<T>::empty(){
    	/*if(stack1.empty()&&stack2.empty()) return true;
    	else return false;*/
    	return stack1.empty()&&stack2.empty()?true:false;
    }
    void test(MyQueue<int> q){               //测试
    	int data[]={1,2,3,4,5,6,7,8,9,10};
    	for(int i=0;i<=6;i++)
    		q.push(data[i]);
    	for(int i=0;i<=5;i++)
    		cout<<q.pop()<<" ";
    	cout<<endl;
    	for(int i=7;i<=9;i++)
    		q.push(data[i]);
    	while(!q.empty()){
    		cout<<q.pop()<<" ";
    	}
    	cout<<endl;
    	return;
    }
    int main(void){
    	MyQueue<int> q;
    	test(q);
    	system("pause");
    	return 0;
    }
    
  • 相关阅读:
    oracle在线重定义表
    Oracle 分区表
    oracle表空间不足扩容的方法
    oracle查看锁表进程,杀掉锁表进程[转载]
    创建sequence和触发器出现权限不足
    百万级数据库优化方案[转载]
    oracle 表空间
    数据库MySQL——SQL语句(命令)
    HTTP状态码
    http和https
  • 原文地址:https://www.cnblogs.com/aLittleBitCool/p/1958399.html
Copyright © 2020-2023  润新知