标签:
用两个队列实现栈的功能.
1 #include<iostream> 2 #include <deque> 3 using namespace std; 4 template<class T> class Mystack 5 { 6 public: 7 Mystack(){} 8 ~Mystack(){} 9 void push(T t); 10 T top(); 11 void pop(); 12 private: 13 deque<T> A; 14 deque<T> B; 15 }; 16 17 template<class T> void Mystack<T>::push(T t) //从队列A尾部入栈 18 { 19 A.push_back(t); 20 } 21 template<class T> T Mystack<T>::top() //B的顶部出栈 22 { 23 while(A.size()>1) 24 { 25 B.push_back(A.front()); //A的头部弹出进入B的尾部 26 A.pop_front(); //对A的头部进行清理工作 27 } 28 29 T tmp=A.front(); //令temp指向A队列顶部 30 B.push_back(A.front()); //A的顶部进入B队尾 31 32 A.pop_front(); //对A的头部进行清理工作 33 while(B.size()!=0) 34 { 35 A.push_back(B.front()); //B的头部弹出进入A的尾部 36 B.pop_front(); 37 } 38 return tmp; 39 } 40 template<class T> void Mystack<T>::pop() 41 { 42 while(A.size()>1) 43 { 44 B.push_back(A.front()); 45 A.pop_front(); 46 } 47 A.pop_front(); 48 while(B.size()!=0) 49 { 50 A.push_back(B.front()); 51 B.pop_front(); 52 } 53 54 } 55 56 void main() 57 { 58 int i; 59 Mystack<int> a; 60 for(i=0;i<10;i++) 61 a.push(i); 62 for(i=0;i<10;i++) 63 { 64 cout<<a.top()<<endl; 65 a.pop(); 66 } 67 }
标签:
原文地址:http://www.cnblogs.com/wxdjss/p/5450960.html