#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; /*队列为空,返回1.*/
else
return 0; /*队列不为空,返回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);
}
}
循环队列
最新推荐文章于 2024-06-09 22:16:32 发布