循环队列,如其名,循环,在一个给定长度len的队列里,当队列队尾已经是最后一个,tail=len时,再入队时,从队头开始入队。像这样队列头尾相接的顺序存储结构称为循环队列。
循环队列入队时,要看队列是否已满,出队时要看队列是否为空。
创建一个循环队列:
typedef struct Node
{
int data[10];
int front;//头指针
int rear;//尾指针
}queue;
入队操作:如果队列未满,则插入新元素。
if(Q->rear+1)%len==Q->front)//判断队列是否已满
return ERROR;
Q->data[Q->rear]=e;//e入队
Q->rear=(Q->rear+1)%len;
出队操作:如果队列不为空,则出队。
if(Q->front==Q->rear)//判断队列是否为空
return ERROR;
*e=Q->data[Q->front];//队首元素赋给e
Q->front=(Q->front+1)%len;//front指针向后移一位(如果到最后,那么front应该指向队首)