View Code
1 const int maxqueue = 50;
2
3 enum Error_code
4 {
5 success, overflow, underflow, fail //沒有;
6 };
7
8 template<class T>
9 class Queue
10 {
11 public:
12 Queue();
13 bool empty() const;
14 Error_code serve();
15 Error_code append(const T &item);
16 Error_code retrieve(T &item) const;
17 protected:
18 int count;
19 int front, rear;
20 T entry[maxqueue];
21 };
22
23 template <class T>
24 Queue<T>::Queue()
25 {
26 count = 0;
27 rear = maxqueue - 1;
28 front = 0;
29 }
30
31 template <class T>
32 bool Queue<T>::empty() const
33 {
34 return count == 0;
35 }
36
37 template <class T>
38 Error_code Queue<T>::append(const T &item)
39 {
40 if (count >= maxqueue)
41 return overflow;
42 count++;
43 rear = ((rear+1) == maxqueue) ? 0:(rear+1);
44 entry[rear] = item;
45 return success;
46 }
47
48 template <class T>
49 Error_code Queue<T>::serve()
50 {
51 if (count <= 0)
52 return underflow;
53 count--;
54 front = ((front+1) == maxqueue) ? 0:(front+1);
55 return success;
56 }
57
58 template <class T>
59 Error_code Queue<T>::retrieve(T &item) const
60 {
61 if (count <= 0)
62 return underflow;
63 item = entry[front];
64 return success;
65 }