循环队列是采用是顺序存储
循环队列就是在普通队列的基础上,使最后一个单元的后继为第一个单元
#define MAXSIZE 50
//顺序循环结构体
typedef struct
{
int element[MAXSIZE];
int front;
int rear;
}SeqQueue;
void InitQueue(SeqQueue *Q)
{
/*将*Q初始化为一个空的循环队列*/
Q->front = Q->rear = 0;
}
int EnterQueue(SeqQueue *Q, int x)
{
if((Q->rear+1)%MAXSIZE == Q->front) //尾指针加1追上头指针,标志队列已经满了
return -1;
Q->element[Q->rear]=x;
Q->rear=(Q->rear+1)%MAXSIZE; //重新设置队尾指针,队首指针保持不变
return 1;
}
int DeleteQueue(SeqQueue *Q, int* x)
{
if(Q->front == Q->rear) //队列为空
return -1;
*x=Q->element[Q->front];
Q->front=(Q->front+1)%MAXSIZE; //重新设置队头指针
return 1;
}