QueueStruct.h
/**********************************************************************************
* @file QueueStruct.h
* @brief 队列结构及其常用操作(C语言实现)
*
* @attention
*
* @note 可选队列实现方式,链表或数组
* 使用数组实现队列的优点和缺点:
* 优点:
* 实现简单:使用数组实现队列比较直观和简单,不需要考虑指针之间的连接关系。
* 内存占用少:数组在内存中是一块连续的存储空间,相比链表在存储指针的开销上要少一些。
* 缺点:
* 静态大小:数组的大小在初始化时就确定,队列的大小受限于数组大小,无法动态扩展。
* 频繁的操作影响性能:在队列头部插入或删除元素时,需要频繁地搬移数组元素,影响性能。
*
* 使用链表实现队列的优点和缺点:
* 优点:
* 动态大小:链表实现的队列可以动态扩展或缩小,不受固定大小的限制,更加灵活。
* 插入、删除性能好:在链表的头尾进行插入、删除操作时,时间复杂度为 O(1)。
* 缺点:
* 占用更多内存:链表中每个节点都需要存储指针信息,会占用更多的内存空间。
* 实现复杂:相比数组实现,链表需要考虑指针的操作和连接,实现起来相对复杂一些。
*总结:个人认为,由于现在MCU内存容量的提升,链表的实现方式,除了实现复杂,其余都是优点。
*
*
* @version V1.0
* - 编写队列数据结构(采用数组循环)和基本操作(创建、判空、判满、入队、出队)
*
* @date 2024-03-22
**********************************************************************************/
#ifndef __QUEUE_STRUCT__H_
#define __QUEUE_STRUCT__H_
#define QueueStruct_MAX_SIZE 100 // 队列内存大小
#pragma pack(1)
typedef enum
{
__Queue_SUCCESSFUL = 0, // 操作成功,非满,非空
__Queue_FAILEDL = -1, // 操作失败
__Queue_Is_EMPTY = 1001, // 队列空
__Queue_Is_FULL = 1002, // 队列满
__Queue_ERR_CODE_END
}E_QueueErrCode;
typedef struct
{
void* aElement[QueueStruct_MAX_SIZE];
int nFrontIndex; // 队列头部索引
int nRearIndex; // 队列尾部索引
}T_Queue;
#pragma pack()
/****