循环队列(顺序)一

SeQueue

  1. <pre name="code" class="cpp">/*============================================================================= 
  2. # 
  3. #      Author: liangshu - cbam  
  4. # 
  5. #      QQ : 756029571  
  6. # 
  7. #      School : 哈尔滨理工大学  
  8. # 
  9. #      Last modified: 2015-10-26 14:37 
  10. # 
  11. #     Filename: 顺序循环队列一  副本 (3).cpp 
  12. # 
  13. #     Description:  
  14. #        The people who are crazy enough to think they can change the world, are the ones who do !  
  15. =============================================================================*/  
  16. #  
  17. using namespace std;  
  18.   
  19. template<class T>  
  20. class SeqQueue  
  21. {  
  22. public:  
  23.     SeqQueue(int sz):rear_(0),front_(0),num(0),Max_size(sz){  
  24.       Queue = new T[sz];  
  25.       if(Queue == NULL){  
  26.         cout<<"runtime error!"<<endl;return ;  
  27.       }  
  28.     }  
  29.     ~SeqQueue(){  
  30.       delete[] Queue;  
  31.     }  
  32.   
  33.     void Clear_queue();  
  34.     bool Is_empty()const;  
  35.     bool Is_full()const;  
  36.     bool Append(const T &item);  
  37.     T Delete();  
  38.     T Get_front()const;  
  39.     void Print()const;  
  40.    
  41. private:  
  42. <pre name="code" class="cpp">    int rear_;  
  43.     int front_;  
  44.     int num;  
  45.     int Max_size;  
  46.     T * Queue;  
  47. };  
  48.   
  49. template<class T>  
  50. void SeqQueue<T>::Clear_queue(){  
  51.     this -> num = 0;  
  52.     this -> rear_ = 0;  
  53.     this -> front_ = 0;  
  54. }  
  55.   
  56. template<class T>  
  57. bool SeqQueue<T>::Is_empty()const{  
  58.   return num == 0;  
  59. }  
  60.   
  61. template<class T>  
  62. bool SeqQueue<T>::Is_full()const{  
  63.   return num == Max_size;  
  64. }  
  65.   
  66. template<class T>  
  67. bool SeqQueue<T>::Append(const T &item){  
  68.     if(Is_full()){  
  69.         cout<<"The queue is full!"<<endl;return false;  
  70.     }  
  71.     Queue[rear_] = item;  
  72.     rear_ = (rear_ + 1== Max_size ? 0 : rear_  + 1);  
  73.   
  74.     num++;  
  75.     return true;  
  76. }  
  77.   
  78. template<class T>  
  79. T SeqQueue<T>::Get_front()const{  
  80.    if(Is_empty()){  
  81.     cout<<"There is no  element available!"<<endl;return false;  
  82.    }  
  83.    return Queue[front_];  
  84. }  
  85.   
  86. template<class T>  
  87. T SeqQueue<T>::Delete(){  
  88.   if(Is_empty()){  
  89.     cout<<"There is no  element available!"<<endl;return false;  
  90.   }  
  91.   T tmp = Queue[front_];  
  92.   front_ = (front_ ++) % Max_size;  
  93.   num --;  
  94.   return tmp;  
  95. }  
  96.   
  97. template<class T>  
  98. void SeqQueue<T>:: Print()const{  
  99.    cout<<"front -> ";  
  100.    for(int i = 0; i < num; i++){  
  101.     cout<<Queue[(front_ + i) % Max_size]<<" -> ";  
  102.    }  
  103.    cout<<"rear"<<endl;  
  104. }  

Test.cpp
  1. #include<iostream>  
  2. #include"SeQueue.h"  
  3. using namespace std;  
  4. int main()  
  5. {  
  6.     SeqQueue<int>queue_(6);  
  7.     for(int i = 1; i <= 5; i++){  
  8.         queue_.Append(i);  
  9.     }  
  10.     queue_.Print();  
  11.     cout<<queue_.Get_front()<<endl;  
  12.     queue_.Delete();  
  13.     cout<<queue_.Get_front()<<endl;  
  14.     queue_.Append(6);  
  15.    queue_.Append(7);  
  16.    queue_.Append(8);  
  17.     queue_.Print();  
  18.     queue_.Clear_queue();  
  19.     cout<<queue_.Get_front();  
  20.     return 0;  
  21. }  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值