• 数据结构-共享栈


    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. }
  • 相关阅读:
    DC电源模块的使用寿命问题
    闲聊企业数字化转型(1)-供应链数字化
    EasyX图形库实现贪吃蛇游戏
    记账时,花费如何按类别分类
    树莓派+墨水屏 = DIY一个超慢速电影播放器
    Coursera耶鲁大学金融课程:Financial Markets 笔记Week 01
    重温C语言十一 ----数组
    计算机毕业设计ssm+vue 的医院体检预约小程序
    typename 的用法
    (三)基于docker-compose的微服务编排实践-搭建nacos
  • 原文地址:https://blog.csdn.net/daodaipsrensheng/article/details/132740242