【C++算法与数据结构学习笔记------用循环数组实现队列】
生活随笔
收集整理的這篇文章主要介紹了
【C++算法与数据结构学习笔记------用循环数组实现队列】
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
照王曉東《數據結構》(C++語言版)上打的,以備留用。
1 #include <iostream> 2 using namespace std; 3 template<typename T> 4 class Queue{ 5 public: 6 Queue(int max=10000); 7 ~Queue(){delete [] que;} 8 bool empty()const {return que_front==que_rear;} 9 bool full()const {return (((que_rear+1)%max_size==que_front)?1:0);} 10 int size()const {return ((que_rear >que_front)?que_rear-que_front:que_rear-que_front+max_size);} 11 T front()const {return que[(que_front+1)%max_size];} 12 T back()const {return que[que_rear];} 13 Queue<T>& push(const T& x); 14 Queue<T>& pop(T& x); 15 private: 16 int que_front;//隊首游標 17 int que_rear; //隊尾游標 18 int max_size; //循環數組大小 19 T *que; //隊列元素 20 }; 21 template <typename T> 22 Queue<T>::Queue(int max) 23 { 24 max_size=max+1;//采用滿足max_size-1時full=true的方法。 25 que=new T[max_size]; 26 que_front=que_rear=0; 27 } 28 template <typename T> 29 Queue<T>& Queue<T>::push(const T& x) 30 { 31 if (full()) return *this; 32 que_rear=(que_rear+1)%max_size; 33 que[que_rear]=x; 34 return *this; 35 } 36 template <typename T> 37 Queue<T>& Queue<T>::pop(T& x) 38 { 39 if (empty()) return *this; 40 que_front=(que_front+1)%max_size; 41 x=que[que_front]; 42 return *this; 43 }?
轉載于:https://www.cnblogs.com/EnCaL/archive/2012/05/08/2490887.html
總結
以上是生活随笔為你收集整理的【C++算法与数据结构学习笔记------用循环数组实现队列】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ZZ:new/delete 和mallo
- 下一篇: 进程间通信(一)管道