//循环队列
#include<stdio.h>
#include<stdlib.h>
#define MAXSIZE 6
typedef int QElemType;
typedef struct
{
QElemType *base;
int front;
int rear;
}SqQueue;
void InitSqQueue(SqQueue &Q)
{
Q.base=(QElemType *)malloc(MAXSIZE*sizeof(QElemType));
if(!Q.base)
{
printf("Malloc memory error!");
exit(1);
}
Q.front=Q.rear=0;
}
void EnSqQueue(SqQueue &Q,QElemType e)
{
if((Q.rear+1)%MAXSIZE==Q.front)
{
printf("Queue is full");
exit(1);
}
Q.base[Q.rear]=e;
Q.rear=(Q.rear+1)%MAXSIZE;
}
void DeSqQueue(SqQueue &Q,QElemType &e)
{
if(Q.front==Q.rear)
{
printf("Queue is empty");
exit(1);
}
e=Q.base[Q.front];
Q.front=(Q.front+1)%MAXSIZE;
}
int main()
{
int a[]={0,3,4,8,23},i;
SqQueue Q1;
InitSqQueue(Q1);
for(i=0;i<5;i++)
EnSqQueue(Q1,a[i]);
int e;
for(i=0;i<5;i++)
{
DeSqQueue(Q1,e);
printf("%d ",e);
}
printf("/n");
}