【MCU】堆栈的满空和生长方向

堆栈的满空和生长方向

堆栈两种操作:压栈和弹出

压栈即向堆栈中添加元素。根据使用的空间的地址顺序不同,将堆栈的生长方向分为顺向和逆向。先使用低地址就是顺向生长,反之则为逆向生长。
在这里插入图片描述

左边是51这种顺序生长,右边是80806/stm32那种逆向生长

根据SP指定的相对位置,将堆栈分为满堆栈和空堆栈。空堆栈的SP指向堆栈最顶的元素再下一个位置,也即是空的、堆栈中当前第一个可用的空间。而满堆栈的SP指向堆栈顶部那个元素的位置。

容易理解的是,满堆栈方便出栈操作。因为SP就指向栈顶那个元素的位置,直接将SP指向的那个位置的元素取出即可。而进行压栈操作的时候,就要先调整SP,使之指向下一个空的位置,以便放入新的元素到栈中。

在这里插入图片描述

左边两个分别是有一个元素和三个元素的空栈,右边是有五个元素的满栈

思考:满堆栈压栈的时候SP如何调整,是增大还是减小?

答案:与堆栈的生长方向有关,顺序生长就增大,逆向生长就减小

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值