#include<stdio.h>
#include<stdlib.h>
#define MAX_QSIZE 5
typedef int ElemType;
typedef struct {
ElemType *base;
int front;
int rear;
}CSqQueue;
//初始化循环队列
int InitCSqQueue(CSqQueue &Q){
Q.base=(ElemType *)malloc(sizeof(ElemType));
Q.front=Q.rear=0;
return 0;
}
//插入元素
int EnCSqQueue(CSqQueue &Q,ElemType e){
if((Q.rear+1)%MAX_QSIZE==Q.front)
return -1;
Q.base[Q.rear]=e;
Q.rear=(Q.rear+1)%MAX_QSIZE;
return 0;
}
//清空循环队列
int ClearQueue(CSqQueue &Q){
Q.front=Q.rear=0;
return 0;
}
//循环队列的长度
int LengthQueue(CSqQueue Q)
{
return (Q.rear-Q.front+MAX_QSIZE)%MAX_QSIZE;
}
//删除元素
int DeQueue(CSqQueue &Q,ElemType &e)
{
if(Q.front==Q.rear)
return -1;
e=Q.base[Q.front];
Q.front=(Q.front+1)%MAX_QSIZE;
return e;
}
//得到元素
int GetQueue(CSqQueue Q,ElemType &e)
{
if(Q.front==Q.rear)
return -1;
e=Q.base[Q.front];
return e;
}
//判空
int EmptyQueue(CSqQueue Q)
{
if(Q.front==Q.rear)
return 1;
else
return 0;
}
int main(){
CSqQueue Q;
int i,e;
InitCSqQueue(Q);
printf("%d ", EmptyQueue(Q));
EnCSqQueue(Q,1);
EnCSqQueue(Q,2);
EnCSqQueue(Q,3);
printf("\n");
printf("%d ",LengthQueue(Q));
printf("\n");
GetQueue(Q,e);
printf("%d ",e);
printf("\n");
DeQueue(Q,e);
printf("%d",e);
printf("\n");
for(i=Q.front;i<Q.rear;i++){
printf("%d ",Q.base[i]);
}
printf("\n");
ClearQueue(Q);
printf("%d ", EmptyQueue(Q));
return 0;
}