队列拥有先进先出特性,类似生活中的排队场景,多应用于缓冲区的设计等。
循环队列就是当front或者rear即将产生数组越界时,将其置为0。
本文用数组实现循环队列,感兴趣的朋友也可以用链表实现循环队列。
以下为源码。
queue.h
#ifndef __QUEUE_H__
#define __QUEUE_H__
#include "stm32f10x.h"
#include <string.h>
#define MaxQueueLength 20
#define LoopQueue
typedef struct
{
uint32_t Array[MaxQueueLength];
uint32_t front;
uint32_t rear;
uint32_t length;
}QueueNode;
typedef unsigned int QueueState;
QueueState Queue_Init(QueueNode * pHead);
QueueState Queue_IsEmpytOrFull(QueueNode * pHead);
QueueState Queue_AddValue(QueueNode * pHead,const uint32_t value);
QueueState Queue_OutPut(QueueNode * pHead, uint32_t *pBuffer , uint32_t nBytes);
#endif
queue.c
#include "queue.h"
/**
* @name Queue_Init.
* @brief Init My Queue.
* @param ListNode * pHead: Hea