//队列声明
#define MaxSize 10//最大长度
typedef int ElemType;
//定义循环队列
typedef struct cqueue
{
ElemType data[MaxSize];//数据域
int front; //对头
int rear; //对尾
int num; //元素个数
}CiQueue;
//队列初始化(循环队列)
int InitCiQueue(CiQueue &cq)
{
cq.front=cq.rear=0; //初始化队列从0开始
cq.num=0; //元素个数清零
return 1;
}
//入对(循环队列:对尾赋值再后移)
int InCiQueue(CiQueue &cq,int x)
{
if(cq.num == MaxSize)//利用元素个数判断
{
printf("循环队列已满!\n");
return 0;
}
else
{
cq.data[cq.rear] = x;//赋值
cq.rear = (cq.rear+1)%MaxSize;//对尾后移:对尾加一求模(循环使用)
cq.num++;//元素个数增加
}
return 1;
}
//出对(循环队列:对头取值再后移)
int OutCiQueue(CiQueue &cq,int &x)
{
if(cq.num == 0)
{
printf("循环队列为空!\n");
return 0;
}
else
{
x=cq.data[cq.front];//取对头值
cq.front=(cq.front+1)%MaxSize;//对头后移:对头加一求模(循环使用)
cq.num--; //元素个数减一
}
return 1;
}