码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 数据结构-共享栈


    1.概念 

    共享栈:两个栈共享同一片存储空间,这片存储空间不单独属于任何一个栈,某个栈需要的多一点,它就可能得到更多的存储空间;两个栈的栈底在这片存储空间的两端,当元素入栈时,两个栈的栈顶指针相向而行。 

    2.栈的基本操作

    2.1 栈空

    什么时候栈为空?

    0号栈:top0 == -1
    1号栈:top1 == MaxSize
    1. //判断是否栈空
    2. int IsEmpty(SharedStack s){
    3. //是否栈空
    4. if(s.top0 == -1 && s.top1 == MaxSize){
    5. return 0;
    6. }
    7. return 1;
    8. }

     

    2.2 栈满:

    两个栈顶指针重合时,表示共享栈已经满了

    top1 = top0 + 1;
    1. //判断是否栈满
    2. int IsStackFull(SharedStack s,ElemType *x){
    3. //是否栈满
    4. if(s.top0+1 == s.top1){
    5. return 0;
    6. }
    7. return 1;
    8. }

    2.3 进栈

    0号栈:先栈顶指针加一,再元素进栈:  tack[++top[0]]=x;
    1号栈:先栈顶指针减一,再元素进栈: tack[--top[0]]=x;
    1. //0号栈入栈
    2. void SharedStackPush1(SharedStack *stack,ElemType value)
    3. {
    4. if(stack->top0+1 == stack->top1)
    5. {
    6. printf("栈已经满了\n");
    7. return;
    8. }
    9. ++stack->top0;
    10. stack->data[stack->top0] = value;
    11. return;
    12. }
    13. //1号栈入栈
    14. void SharedStackPush2(SharedStack *stack,ElemType value)
    15. {
    16. if(stack->top0+1 == stack->top1)
    17. {
    18. printf("栈已经满了\n");
    19. return;
    20. }
    21. --stack->top1;
    22. stack->data[stack->top1] = value;
    23. return;
    24. }

    2.4 出栈

    0号栈:先取出栈顶元素,栈顶指针减一
    1号栈:先取出栈顶元素,栈顶元素加一
    1. //0号栈出栈
    2. void SharedStackPop1(SharedStack *stack,ElemType *value)
    3. {
    4. if(stack->top0 == -1)
    5. {
    6. printf("栈已经空了\n");
    7. return;
    8. }
    9. *value = stack->data[stack->top0];
    10. --stack->top0;
    11. return;
    12. }
    13. //1号栈出栈
    14. void SharedStackPop2(SharedStack *stack,ElemType *value)
    15. {
    16. if(stack->top1 == MaxSize)
    17. {
    18. printf("栈已经空了\n");
    19. return;
    20. }
    21. *value = stack->data[stack->top1];
    22. ++stack->top1;
    23. return;
    24. }
  • 相关阅读:
    基于Django的博客系统之用HayStack连接elasticsearch增加搜索功能(五)
    RK3568平台开发系列讲解(驱动篇)RK3568 PWM详解
    vue2知识点————(父子通信)
    谁说文艺青年开花店必亏,我用3年时间挣了20万
    涉及第三方支付接口,怎么测?
    【PHP】PHP7中的引用计数
    RHCE——实施高级存储功能(CSA)
    java入坑之类加载器
    C语言文件操作(四) —— 文件读取结束的判定(feof、ferror)
    java枚举类详解
  • 原文地址:https://blog.csdn.net/daodaipsrensheng/article/details/132740242
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号