循环队列的基本操作

 1 #include <stdio.h>
 2 #include <stdlib.h>
 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 }

 

posted @ 2020-03-21 15:03  wydxry  阅读(800)  评论(0编辑  收藏  举报
Live2D