41 lines
1.3 KiB
C
41 lines
1.3 KiB
C
|
|
#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;
|
|
}
|