1 #include<iostream>
 2 using namespace std;
 3 
 4 
 5 class Queue
 6 {
 7     int front,rear,size,capacity;
 8     int* array;
 9 
10 public:
11     Queue(int cap);
12     ~Queue();
13     int get_front();
14     int get_rear();
15     void en_queue(int n);
16     void de_queue();
17     bool is_full();
18     bool is_empty();
19 };
20 
21 
22 Queue::Queue(int cap) // no return
23 {
24     capacity=cap;
25     array=new int[capacity];
26     front=size=0;
27     //草泥马的是rear要-1,如果front=rear=0,那入队入的是1号位,front=0
28     rear=-1;  
29 };
30 
31 Queue::~Queue()
32 {
33     delete[] array;
34 }
35 
36 bool Queue::is_full()
37 {
38     return size==capacity;
39 };
40 
41 bool Queue::is_empty()
42 {
43     return size==0;
44 }
45 
46 void Queue::en_queue(int n)
47 {
48     if(is_full())
49         return;
50     else
51     {
52         rear+=1;
53         array[rear]=n;
54         size+=1;
55         cout<<n<<" enqueued!"<<endl;
56     }
57 }
58 
59 void Queue::de_queue()
60 {
61     if(is_empty())
62         return;
63     else
64     {
65         int item=array[front];
66         cout<<item<< "dequeued!"<<endl;
67         front+=1;
68         size-=1;
69     }
70 }
71 
72 int Queue::get_front()
73 {
74     if(is_empty())
75         return -1;
76     else
77         return array[front];
78 }
79 
80 int Queue::get_rear()
81 {
82     if(is_empty())
83         return -1;
84     else
85         return array[rear];
86 }
87 
88 int main()
89 {
90     Queue q(10);
91     q.en_queue(100);
92     q.en_queue(200);
93     q.en_queue(300);
94     q.en_queue(400);
95     q.de_queue();
96     cout<<q.get_front()<<endl;
97     cout<<q.get_rear()<<endl;
98     return 0;
99 }