#include "queue.h" xdata SqQueue ntcQueue; /*************************************************************************************** * @说明 初始化队列 * @参数 队列q * @返回值 无 * @注 无 ***************************************************************************************/ void InitQueue(SqQueue *Q) { Q->front = Q->rear = 0; } /*************************************************************************************** * @说明 入队 * @参数 队列q 入队数据 * @返回值 无 * @注 无 ***************************************************************************************/ void EnQueue(SqQueue *Q, u16 val) { if ((Q->rear + 1) % MAXIZE == Q->front) DeQueue(Q); // 用来保证队列满的时候,数组仍留出一个空闲空间 判断队满后出队一个 然后再让数据入队 Q->base[Q->rear] = val; Q->rear = (Q->rear + 1) % MAXIZE; } /*************************************************************************************** * @说明 出队 * @参数 队列q * @返回值 无 * @注 无 ***************************************************************************************/ void DeQueue(SqQueue *Q) { // 出队 if (Q->front == Q->rear) return; // 队中没有数据 else Q->front = (Q->front + 1) % MAXIZE; }