目录
一、结构体
typedef struct loop_que
{
int data[MAXSIZE];
int front;
int rear;
} loopque, *que;
二、判空
int empty_loopque(que Q)
{
if (Q == NULL)
{
printf("入参为空\n");
return -1;
}
return Q->rear == Q->front ? 1 : 0;
}
三、判满
int full_loopque(que Q)
{
if (Q == NULL)
{
printf("入参为空\n");
return -1;
}
return (Q->rear + 1) % MAXSIZE == Q->front ? 1 : 0;
}
四、入队
void push_loopque(que Q, int data)
{
if (Q == NULL)
{
printf("入参为空\n");
return;
}
if (full_loopque(Q))
{
printf("循环队列已满\n");
return;
}
Q->data[Q->rear] = data;
Q->rear = (Q->rear + 1) % MAXSIZE;
}
五、出队
int pop_loopque(que Q)
{
if (Q == NULL)
{
printf("入参为空\n");
return -1;
}
if (empty_loopque(Q))
{
printf("循环队列为空\n");
return -1;
}
int data = Q->data[Q->front];
Q->front = (Q->front + 1) % MAXSIZE;
return data;
}
六、打印
void print_loopque(que Q)
{
if (Q == NULL)
{
printf("入参为空\n");
return;
}
if (empty_loopque(Q))
{
printf("循环队列为空\n");
return;
}
int count = (Q->rear - Q->front + MAXSIZE) % MAXSIZE;
int num = Q->front;
while (count > 0)
{
printf("Q->data[%d]=%d\n",num, Q->data[num]);
num++;
count--;
}
}
七、清空
void clean_loopque(que Q)
{
if (Q == NULL)
{
printf("入参为空\n");
return;
}
if (empty_loopque(Q))
{
printf("循环队列为空\n");
return;
}
Q->front = Q->rear;
printf("循环队列已清空\n");
}
八、销毁
void destory_loopque(que *Q)
{
if (*Q == NULL)
{
printf("入参为空\n");
return;
}
free(*Q);
*Q = NULL;
printf("循环队列已销毁\n");
}