1 #include "iostream"
2 using namespace std;
3
4 #define MAXLENGTH 20
5 typedef struct Queue
6 {
7 int array[MAXLENGTH];
8 //first指向将要被删除的元素的下标,tail指向可以被插入元素的位置
9 int first,tail;
10 }Queue;
11
12 void initial(Queue *queue)
13 {
14 queue->first = 0;
15 queue->tail = 0;
16 }
17
18 //入队
19 bool enq(Queue *queue,int elem)
20 {
21 //我的想法
22 // if (queue->tail == MAXLENGTH-1)
23 // {
24 // cout<<"overflow!"<<endl;
25 // return false;
26 // }
27 queue->array[queue->tail] = elem;
28
29 if (queue->tail == MAXLENGTH-1)
30 {
31 queue->tail = 0;
32 }
33 else
34 {
35 queue->tail++;
36 }
37
38 if (queue->tail == queue->first)
39 {
40 cout<<"overflow !"<<endl;
41 return false;
42 }
43 return true;
44 }
45 //出队
46 bool deq(Queue *queue)
47 {
48 if (queue->tail == queue->first)
49 {
50 cout<<"underflow !"<<endl;
51 return false;
52 }
53 else if (queue->first == MAXLENGTH -1)
54 {
55 queue->first = 0;
56 }
57 else
58 {
59 queue->first++;
60 }
61 return true;
62 }
63
64 void print(Queue queue)
65 {
66 int i = queue.first;
67 while (i != queue.tail)
68 {
69 cout<<queue.array[i]<<endl;;
70 i++;
71 }
72 }
73 //判断队列是否为空
74 bool isempty(Queue queue)
75 {
76 return queue.first == queue.tail;
77 }
78
79 //读取队首元素
80 bool readfront(Queue queue,int *elem)
81 {
82 if (isempty(queue))
83 {
84 return false;
85 }
86 *elem = queue.array[queue.first];
87 return true;
88 }
89
90
91 int main()
92 {
93 Queue queue;
94 initial(&queue);
95
96 enq(&queue,1);
97 enq(&queue,2);
98 print(queue);
99 cout<<"------------------------"<<endl;
100 deq(&queue);
101 print(queue);
102
103 cout<<"--------------------------"<<endl;
104 int elem;
105 if(readfront(queue,&elem))
106 {
107 cout<<elem<<endl;
108 }
109 return 0;
110 }
![]()