队列——顺序队列
原文地址:http://blog.csdn.net/ggxxkkll/article/details/8661569
原作者的讲解很详细,看过受益很大。
1 #include "stdafx.h" 2 #include "stdlib.h" 3 #include<iostream> 4 using namespace std; 5 6 const int QueueSize = 100; 7 8 template <class T> 9 class CirQueue 10 { 11 public: 12 CirQueue(); 13 ~CirQueue(); 14 void EnQueue(T x); 15 T DeQueue(); 16 T GetQueue(); 17 bool Empty(); 18 private: 19 T data[QueueSize]; 20 int front,rear; 21 }; 22 23 template <class T> 24 CirQueue<T>::CirQueue() 25 { 26 front = rear = 0; 27 } 28 29 template <class T> 30 CirQueue<T>::~CirQueue() 31 {} 32 33 template<class T> 34 void CirQueue<T>::EnQueue(T x) 35 { 36 if((rear+1) % QueueSize == front) throw "上溢"; 37 rear = (rear+1)% QueueSize;// 38 data[rear] = x; 39 } 40 41 template <class T> 42 T CirQueue<T>::DeQueue() 43 { 44 if(rear == front) throw "下溢"; 45 front = (front+1)% QueueSize; 46 return data[front]; 47 } 48 49 template <class T> 50 T CirQueue<T>::GetQueue() 51 { 52 int i; 53 if(rear == front) throw "下溢"; 54 i = (front+1)% QueueSize; 55 return data[i]; 56 } 57 58 template <class T> 59 bool CirQueue<T>::Empty() 60 { 61 if(front == rear) 62 return 1; 63 else 64 return 0; 65 } 66 67 int _tmain(int argc, _TCHAR* argv[]) 68 { 69 CirQueue<double> q; 70 q.EnQueue(1.); 71 q.EnQueue(2.); 72 cout<<q.GetQueue()<<endl; 73 cout<<q.DeQueue()<<endl; 74 cout<<q.DeQueue(); 75 system("pause"); 76 return 0; 77 }
浙公网安备 33010602011771号