#include#include #define MaxSize 5 typedef int ElemType; typedef struct{ ElemType data[MaxSize];//数组,存储MaxSize-1个元素 int front,rear;//队列头,队列尾 }SqQueue; //初始化循环队列 void InitQueue(SqQueue &Q) { Q.front=Q.rear=0; } //判断是否为空 bool IsEmpty(SqQueue Q) { if(Q.front==Q.rear)//不需要为0 { return true; } return false; } //入队 bool EnQueue(SqQueue &Q,ElemType x) { if((Q.rear+1)%MaxSize==Q.front) { return false;//队列满了 } Q.data[Q.rear]=x; Q.rear=(Q.rear+1)%MaxSize;//向后移动一格,实现循环 return true; } //出队 bool DeQueue(SqQueue &Q,ElemType &x) { if(Q.front==Q.rear) { return false;//队为空 } x=Q.data[Q.front]; Q.front=(Q.front+1)%MaxSize; return true; } int main() { SqQueue Q; bool ret;//存储返回值 ElemType element;//存储出队元素 InitQueue(Q);//初始化 ret=IsEmpty(Q); if(ret) { printf("队列为空n"); }else{ printf("队列不为空n"); } EnQueue(Q,3); EnQueue(Q,4); EnQueue(Q,5); ret=EnQueue(Q,6); ret=EnQueue(Q,7); if(ret) { printf("入队成功n"); }else{ printf("入队失败n"); } ret=DeQueue(Q,element); if(ret) { printf("出队成功,出队元素为%dn",element); }else{ printf("出队失败n"); } ret=DeQueue(Q,element); if(ret) { printf("出队成功,出队元素为%dn",element); }else{ printf("出队失败n"); } ret=EnQueue(Q,8); if(ret) { printf("入队成功n"); }else{ printf("入队失败n"); } system("pause"); }



