【C语言】队列(Queue)C语言实现,栈基本操作,编译通过,已测试,可直接使用

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()

/****
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值