栈和队列在嵌入式系统下的C语言实现

一、引言

二、栈(Stack)

2.1 基本概念

2.2 存储结构与C语言实现

2.3. 栈的实现

三、队列(Queue)

3.1 基本概念

3.2 存储结构与C语言实现

3.3. 队列的实现

一、引言

        作为计算机科学中两种基础且关键的线性数据结构,栈(Stack)和队列(Queue)凭借其严格的访问规则确定性的操作特性,在嵌入式系统开发中扮演着重要角色。尽管二者在逻辑结构上与线性表相似,但通过先进后出(LIFO)和先进先出(FIFO)的操作约束,它们能够为资源受限的嵌入式环境提供内存高效、时序可预测的解决方案,尤其适用于中断处理、任务调度、通信协议栈等关键场景。

        本文将从栈与队列的基本概念、存储结构、操作实现,结合嵌入式系统的资源受限性,采用C语言代码示例进行说明。

二、栈(Stack)

2.1 基本概念

        栈是一种后进先出(LIFO的线性表,仅允许在栈顶进行插入(入栈)和删除(出栈)操作。其核心操作包括:初始化、判空、取栈顶元素、入栈和出栈。

2.2 存储结构与C语言实现

1、顺序栈:使用数组实现,需预分配固定大小的连续空间。
 

#define MAXSIZE      100                //栈的大小直接由宏定义指定
typedef struct {
    SElemType   base[MAXSIZE];          // 栈底指针
    int         top;                    // 栈顶指针
} SqStack;

初始化时,base和top指向同一位置,入栈时top递增,出栈时top递减。顺序栈特点如下:

  • 存储效率高:顺序栈通过数组连续存储元素,无额外指针开销,存储密度为100%;适合存储固定规模数据(如已知最大深度的函数调用栈),内存利用率更高
  • 访问速度快:栈顶操作(插入/删除)仅需修改top指针,时间复杂度O(1),且无动态内存分配开销;适合高频次、小规模数据操作(如CPU寄存器模拟)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嵌入式老牛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值