#include<stdio.h>
#define maxsize 10
typedef int Datatype;
typedef struct cycqueue
{
Datatype data[maxsize];
int front;
int rear;
}CycQue;
void InitQueue(CycQue *CQ)
{
CQ->front=0;
CQ->rear=0;
}
int EmptyQueue(CycQue *CQ)
{
if(CQ->rear==CQ->front)
return 1;
else
return 0;
}
int EnQueue(CycQue *CQ,Datatype x)
{
if((CQ->rear+1)%maxsize==CQ->front)
{
printf("队列满!\n");
return 0;
}
else
{
CQ->rear=(CQ->rear+1)%maxsize;
CQ->data[CQ->rear]=x;
return 1;
}
}
int OutQueue(CycQue *CQ)
{
if(EmptyQueue(&CQ))
{
printf("队列空!\n");
return 0;
}
else
{
CQ->front=(CQ->front+1)%maxsize;
return 1;
}
}
Datatype Gethead(CycQue *CQ)
{
if(EmptyQueue(&CQ))
{
printf("NullData!\n");
return 0;
}
else
{
return CQ->data[(CQ->front+1)%maxsize];
}
}
main()
{
CycQue CQ;
InitQueue(&CQ);
int i,temp;
printf("------创建队列------\n");
for(i=1;i<maxsize;i++)
{
printf("请输入第%d个队列元素:\n",i);
scanf("%d",&temp);
EnQueue(&CQ,temp);
}
printf("------输出队列------\n");
while(!EmptyQueue(&CQ))
{
temp=Gethead(&CQ);
OutQueue(&CQ);
printf("%d\t",temp);
}
}