#include<stdio.h>
typedef int ElemType;
typedef int STATUS;
#define MAXSIZE 5
#define OK 1
#define ERROR 0
typedef struct{
int data[MAXSIZE];
int front;
int rear;
}Sequeue;
//循环队列初始化
void InitSequeue(Sequeue *Q)
{
Q->front=0;
Q->rear=0;
}
//计算循环队列长度
int SequeueLength(Sequeue *Q)
{
return (Q->rear-Q->front+MAXSIZE)%MAXSIZE;
}
//往循环队列加入一个数据
STATUS EnQueue(Sequeue *Q,ElemType e)
{
if((Q->rear+1)%MAXSIZE == Q->front)
return ERROR;
Q->data[Q->rear]=e;
Q->rear=(Q->rear+1)%MAXSIZE;
return OK;
}
//把循环队列中的数据送到一个地址中
STATUS DeQueue(Sequeue *Q,ElemType *e)
{
if(Q->rear==Q->front)
return ERROR;
*e=Q->data[Q->front];
Q->front=(Q->front+1)%MAXSIZE;
return OK;
}
int main()
{
Sequeue squeue;
int value,flag=0,i;
InitSequeue(&squeue);
printf("length=%d\n",SequeueLength(&squeue));
for(i=1;i<=5;i++)
{
flag=EnQueue(&squeue,i);
printf("flag=%d length=%d\n",flag,SequeueLength(&squeue));
}
for(i=1;i<=5;i++)
{
flag=DeQueue(&squeue,&value);
printf("flag=%d value=%d length=%d\n",flag,value,SequeueLength(&squeue));
}
return 0;
}
运行效果图如下: