1 enum Error_code {
2 succeed,
3 overflow,
4 underflow
5 };
6
7 typedef int Queue_entry; // Now queue element is int
8
9 const int max_queue = 10;
10
11 class Queue {
12 public:
13 Queue();
14 ~Queue();
15
16 bool empty() const;
17 Error_code append(const Queue_entry & item);
18 Error_code serve();
19 Error_code retrieve(Queue_entry & item) const;
20 int size() const;
21
22 private:
23 int count;
24 int front, rear;
25 Queue_entry entry[max_queue];
26 };
27
28 Queue::Queue() {
29 count = 0;
30 front = 0;
31 rear = max_queue - 1;
32 }
33
34 Queue::~Queue() {
35
36 }
37
38 bool Queue::empty() const {
39 if (count == 0)
40 return true;
41 return false;
42 }
43
44 Error_code Queue::append(const Queue_entry & item) {
45 if (count == max_queue)
46 return overflow;
47 count++;
48 rear = ((rear+1)==max_queue) ? 0 : (rear+1);
49 entry[rear] = item;
50 return succeed;
51 }
52
53 Error_code Queue::serve() {
54 if (count == 0)
55 return underflow;
56 count--;
57 front = ((front+1) == max_queue) ? 0 : (front+1);
58 return succeed;
59 }
60
61 Error_code Queue::retrieve(Queue_entry & item) const {
62 if (count <= 0)
63 return underflow;
64 item = entry[front];
65 return succeed;
66 }
67
68 int Queue::size() const{
69 return count;
70 }