栈顶指针与栈容量的关系

     ●栈顶指针(或栈顶索引)通常指向栈中最新添加的元素,栈顶指针表示当前栈中元素的位置。

     ●栈容量是指栈能够存储的最大元素数量。

在栈的初始化中有这样一段代码:

ps->a 是指向栈中存储元素的数组的指针,在栈的实现中,通常使用动态数组来存储栈的元素,而 ps->a 就是这个动态数组的指针。ps->a[0] 表示栈底元素。

ps->top表示栈顶指针。

ps->capacity表示栈的总容量。

栈为空时我们有两种表示方式:

ps->top=0   和   ps->top=-1


栈为空ps->top=0:

        表示栈从 0 开始存储元素,ps->top 表示当前栈中元素的数量,同时也指向下一个元素应该存放的位置。

                例如:当栈为空时,ps->top = 0;当栈中有 1 个元素时,ps->top = 1,依此类推。

       栈满的判断条件:当 ps->top == ps->capacity 时,说明栈中元素的数量已经达到了栈的容量上限,栈已满。

                例如:如果 ps->capacity = 10  ps->top = 10,说明栈中已经有 10 个元素,不能再添加新元素。

       栈顶元素是: ps->a[ps->top - 1]

                 例如,如果 ps->top = 3,表示栈中有 3 个元素,栈顶元素是 ps->a[2]

  压栈操作:

                 每次压入一个元素,先将元素放入 ps->a[ps->top],然后 ps->top++。

总结

                如果 ps->top 从 0 开始,栈满的条件是 ps->top == ps->capacity。 

                特点是:

                            1.ps->top 指向栈顶元素的下一个位置。

                            2.栈为空时,ps->top = 0

                            3.栈满时,ps->top = ps->capacity

                            4.栈顶元素,ps->a[ps->top - 1]


栈为空ps->top=-1:

        栈满的判断条件:当ps->top == ps->capacity - 1时,说明栈中元素的数量已经达到了栈的容量上限,栈已满

                例如:如果 ps->top  -1 开始,当栈中有 n 个元素时,ps->top 的值为 n - 1。当栈满时,栈中元素的数量等于栈的容量,即 ps->top == ps->capacity - 1。

        栈顶元素是 ps->a[ps->top]

                例如,如果 ps->top = 2,表示栈中有 3 个元素,栈顶元素是 ps->a[2]。

  压栈操作:

                每次压入一个元素时,ps->top 会先增加(ps->top++),然后再将元素放入栈中ps->a[ps->top],因此,ps->top 始终指向栈顶元素的位置。

总结

               如果 ps->top 从 -1 开始,栈满的条件是 ps->top == ps->capacity - 1。 

               特点是:

                            1.ps->top 指向栈顶元素的位置。

                            2.栈为空时,ps->top = -1

                            3.栈满时,ps->top = ps->capacity - 1

                            4.栈顶元素,ps->a[ps->top]


对比总结

情况ps->top 从 0 开始ps->top 从 -1 开始
栈为空时ps->top = 0ps->top = -1
压栈操作先放元素,再 ps->top++先 ps->top++,再放元素
栈顶元素ps->a[ps->top - 1]ps->a[ps->top]
栈满条件ps->top == ps->capacityps->top == ps->capacity - 1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值