顺序存储之两栈共享空间原理

参考链接:https://blog.csdn.net/weixin_41463193/article/details/85719352
反复看了几遍《大话数据结构》第四章的4.5节,始终不太理解顺序存储的两栈共享是如何实现的(一开始被图4-5-1误导了,以为是通过两个数组来实现)。读完参考链接的博客后,恍然大悟。要点整理如下:

  1. 在一个数组(长度为n)中有两个栈;
  2. 数组的始端和尾端分别是两个栈的栈底;
  3. 对于栈底为数组始端的栈1,插入元素时栈顶指针值(对应数组下标值)top1增加,删除元素时top1减少;
  4. 对于栈底为数组尾端的栈2,插入元素时栈顶指针值top2减少,删除元素时top2增加;
  5. 当且仅当两栈的栈顶相遇时,即top1 + 1 == top2时,栈满,即数组被全部填充;
  6. top1 == -1时,栈1为空;
  7. top2 == n时,栈2为空;
  8. 插入元素时,需要判断是否栈满,以及要把元素插入到栈1还是栈2;
  9. 删除元素时,需要判断栈1或栈2是否为空,并删除相应的元素。
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值