码迷,mamicode.com
首页 > 其他好文 > 详细

两个队列实现栈

时间:2016-05-01 20:22:59      阅读:137      评论:0      收藏:0      [点我收藏+]

标签:

用两个队列实现栈的功能.

 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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!