6-7 在一个数组中实现两个堆栈 (20分)

添加链接描述

在这里插入代码片

    //如何建立一个新的栈
    Stack CreateStack(int MaxSize){
        Stack stk=(Stack)malloc(sizeof(struct SNode));
        //如何申请数组
        stk->Data=(ElementType*)malloc(sizeof(ElementType)*MaxSize);
        stk->MaxSize=MaxSize;
        stk->Top1=-1;
        stk->Top2=MaxSize;
        return stk;
    }
    bool Push(Stack s,ElementType x,int Tag){
        if(s->Top2-s->Top1==1){
            printf("Stack Full\n");
            return false;
        }
        switch(Tag){//注意break的位置
        case 1:s->Data[++s->Top1]=x;return true;break;
        case 2:s->Data[--s->Top2]=x;return true;
        }
    }
    ElementType Pop(Stack s,int Tag){
        switch(Tag){
        case 1:
            if(s->Top1==-1){
                printf("Stack %d Empty\n",Tag);
                return ERROR;
            }
            return s->Data[s->Top1--];
            
        case 2:
            if(s->Top2==s->MaxSize){
                printf("Stack %d Empty\n",Tag);
                return ERROR;
            }
            return s->Data[s->Top2++];
        }
    }
    
    




6-7 在一个数组中实现两个堆栈 (20分)6-7 在一个数组中实现两个堆栈 (20分) 小白鼠666 发布了94 篇原创文章 · 获赞 0 · 访问量 498 私信 关注
上一篇:严蔚敏C语言版数据结构之循环队列的基本操作


下一篇:高校学生在家实践ECS弹性云服务器