有意思的“栈“

format,png

我在学习栈的过程中遇到一些有意思的地方,是什么造成我理解的失误,我又是怎么明白了这其中的奥秘的,今天我们来剖析一下栈,下面进入今天的主题。

(一)介绍一下栈的基础知识

①栈(Stack)是特殊的线性表,说它特殊,就是特殊在插入、删除操作只能在线性表的一端进行,这一端称为栈顶(Top),而它的另一端称为栈底(Bottom)。如图

format,png

②由于这种只能在一端进行操作的线性表,所以在进行出栈的时候就有如下特点“先进后出,后进先出”。解释这句话就是,最先进来的元素在栈底,也是最后进行退栈(删除)操作,而栈顶的元素则是最后插入的元素,也是最先进行退栈(删除)操作。

③运算:入栈是在栈顶位置插入一个新的元素,先将Top指针+1,然后将元素插入到栈顶指针指向的位置。*注意“上溢”错误。

              退栈是将栈顶元素取出并赋给一个指定的变量,先将栈顶指针指向的元素赋给指定的变量,然后将栈顶指针Top-1。*注意“下溢”错误

*我们要清楚Top指针中存放的是节点的地址,节点中才是存放元素.

(二)易失误

①由于很多栈的图就如上一幅一样,画成下面是栈底,上面是栈顶所以在计算的时候会造成一些错误。实际上如下图都是正确的

format,png

②栈内元素计算

公式:|Top-Bottom| + 1

例子:

format,png

首先我们应该确定栈底的位置,由初始状态为top=51,栈的空间是1——50,得知50为栈底(Bottom)。利用公式得出“|20-50|+1=31”选择31为正确

错误做法是认为1为栈底(Bottom),利用公式得出“|20-1|+1=20”选择20为错误

例子:

format,png

首先确定栈底位置,由初始状态为top=0,栈的空间为1——50,得知栈底(Bottom)为1。利用公式得“|20-1|+1=20”选择20为正确

*“|……|”为绝对值符号。

对于栈的一些小知识点就分享到这里,希望可以帮助到各位,如果各位觉得不错请关注+点赞+看一看,分享给您身边有需要的朋友。

format,png

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值