队列——顺序队列

原文地址: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 }

 

posted on 2015-04-29 20:58  Liz-  阅读(231)  评论(0)    收藏  举报