用两个队列实现栈

#include <iostream>
#include <queue>
using namespace std;

template <typename T>
class S
{
    public:
        void push(int a[],int len);
        void pop();
    private:
        queue<T> q1,q2;
};
template <typename T>
void S<T>::push(int a[],int len)
{
    for(int i=0;i<len;++i)
        q1.push(a[i]);
}
template <typename T>
void S<T>::pop()
{
    if(q2.empty()&&!q1.empty())
    {
        while(!q1.empty())
        {
            T &t=q1.front();
            if(t==q1.back())
            {
                cout<<t<<endl;
                q1.pop();
            }
            else
            {
                q2.push(t);
                q1.pop();
            }    
        }
    }
    else if(!q2.empty()&&q1.empty())
    {
        while(!q2.empty())
        {
            T &t=q2.front();
            if(t==q2.back())
            {
                cout<<t<<endl;
                q2.pop();
            }
            else
            {
                q1.push(t);
                q2.pop();
            }
        }
    }
}
int main()
{
    S<int> s;
    int a[]={1,2,3,4,5,6};
    s.push(a,sizeof(a)/sizeof(a[0]));
    s.pop();
    /*s.pop();
    s.pop();
    s.pop();
    s.pop();
    s.pop();*/    
    return 0;
}
原文地址:https://www.cnblogs.com/tianzeng/p/10133934.html