1 #include
2 #include
3 #define MaxSize 5
4 typedef int ElemType;
5 typedef struct{
6 //数组,存储MaxSize-1个元素
7 ElemType data[MaxSize];
8 //队列头 队列尾
9 int front,rear;
10 }SqQueue;
11 void InitQueue(SqQueue &Q)
12 {
13 Q.rear=Q.front=0;
14 }
15 //判空
16 bool isEmpty(SqQueue &Q)
17 {
18 //不需要为零
19 if(Q.rear==Q.front) return true;
20 return false;
21 }
22 //入队
23 bool EnQueue(SqQueue &Q,ElemType x)
24 {
25 //判断是否队满
26 if((Q.rear+1)%MaxSize==Q.front) return false;
27 //3 4 5 6
28 Q.data[Q.rear]=x;
29 Q.rear=(Q.rear+1)%MaxSize;
30 return true;
31 }
32 //出队
33 bool DeQueue(SqQueue &Q,ElemType &x)
34 {
35 //判断是否队空
36 if(Q.rear==Q.front) return false;
37 //先进先出
38 x=Q.data[Q.front];
39 Q.front=(Q.front+1)%MaxSize;
40 return true;
41 }
42 //循环队列的基本操作
43 int main()
44 {
45 SqQueue Q;
46 //存储返回值
47 bool ret;
48 //存储出队元素
49 ElemType element;
50 InitQueue(Q);
51 ret=isEmpty(Q);
52 if(ret) printf("队列为空\n");
53 else printf("队列不为空\n");
54 EnQueue(Q,3);
55 EnQueue(Q,4);
56 EnQueue(Q,5);
57 ret=EnQueue(Q,6);
58 ret=EnQueue(Q,7);
59 if(ret) printf("入队成功\n");
60 else printf("入队失败\n");
61 ret=DeQueue(Q,element);
62 if(ret) printf("出队成功,元素值为 %d\n",element);
63 else printf("出队失败\n");
64 ret=DeQueue(Q,element);
65 if(ret) printf("出队成功,元素值为 %d\n",element);
66 else printf("出队失败\n");
67 ret=EnQueue(Q,8);
68 if(ret) printf("入队成功\n");
69 else printf("入队失败\n");
70 system("pause");
71 }