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