#includetypedef 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; }
