隊列是經常使用的數據結構之一,能夠採用表直接很容易實現,爲了弄清原理,咱們採用數組實現數組
1 /************************************************************************/ 2 /* 隊列的實現,能夠經過表直接實現,這裏採用數組實現 3 /************************************************************************/ 4 5 #ifndef QUEUE_H 6 7 #define QUEUE_H 8 9 #include <assert.h> 10 11 namespace stl 12 { 13 template <typename Object> 14 class Queue 15 { 16 Queue(int QueueSize) 17 :Front(0) 18 ,Rear(1) 19 ,Size(0) 20 ,Capacity(QueueSize) 21 { 22 Array = new Object[QueueSize]; 23 } 24 25 ~Queue() 26 { 27 assert(Array); 28 delete[] Array; 29 } 30 31 //入隊函數 32 void EnQueue(Object x) 33 { 34 if (IsFull()) 35 { 36 throw(); 37 } 38 Array[Rear++] = x; 39 Rear = (++Rear) % Capacity; 40 ++Size; 41 } 42 43 //出隊函數 44 void DeQueue() 45 { 46 if (IsEmpty()) 47 { 48 throw(); 49 } 50 ++Front; 51 --Size; 52 } 53 54 bool IsFull() 55 { 56 return Size == Capacity; 57 } 58 59 bool IsEmpty() 60 { 61 return Size == 0; 62 } 63 64 private: 65 Object* Array; 66 int Capacity; //隊列最大容量 67 int Front; //隊列頭位置 68 int Rear; //隊列尾的位置 69 int Size; //隊列中對象的數量 70 }; 71 } 72 #endif // !QUEUE_H