• 两个队列实现栈


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

     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 }
  • 相关阅读:
    子网划分详解
    USACO range
    USACO shopping
    USACO fence
    USACO Spinning Wheels
    USACO butter
    USACO msquare
    USACO Feed Ratios
    USACO Stringsobits
    USACO Factorials
  • 原文地址:https://www.cnblogs.com/wxdjss/p/5450960.html
Copyright © 2020-2023  润新知