• 数据结构-共享栈


    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. }
  • 相关阅读:
    阿里P8大神十年珍藏,Java技术电子书绝佳推荐,每一本都要吃透
    asp.net core mvc之路由
    【MySQL】表的增删改查(基础)
    3.9 - 正规表达式和正规集 3.10 - 有限自动机
    一篇适合大一同学的算法学习建议
    使用Docker制作镜像并推送到镜像仓库
    1.go语言vscode集成开发环境搭建
    Git分支管理(IDEA)
    diy的电流电压表,高频率采集,上位机同步显示
    Shiro中的session和cookie
  • 原文地址:https://blog.csdn.net/daodaipsrensheng/article/details/132740242