循环队列的基本操作
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 }