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

Posted mile-star

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了6-7 在一个数组中实现两个堆栈 (20 分)相关的知识,希望对你有一定的参考价值。

题目地址:https://pintia.cn/problem-sets/15/problems/730

Pop函数成功弹出后应该返回弹出的值,否则就是错的,应该是和PrintStack函数有关

技术图片
Stack CreateStack(int Maxsize) 
    Stack S = (Stack)malloc(sizeof(struct SNode));
    S->Data = (int *)malloc(sizeof(ElementType)* Maxsize);
    S->MaxSize = Maxsize;
    S->Top1 = -1;
    S->Top2 = Maxsize;
    return S;


bool Push(Stack S, ElementType X, int Tag) 
    if(Tag == 1) 
        if(S->Top1+1 == S->Top2) 
            printf("Stack Full\n");
            return false;
        
        S->Data[++S->Top1] = X;
        return true;
    
    else 
        if(S->Top2 == S->Top1+1) 
            printf("Stack Full\n");
            return false;
        
        S->Data[--S->Top2] = X;
        return true;
    


ElementType Pop(Stack S, int Tag) 
    if(Tag == 1) 
        if(S->Top1 == -1) 
            printf("Stack %d Empty\n", Tag);
            return ERROR;
        
        return S->Data[S->Top1--];
     else 
        if(S->Top2 == S->MaxSize) 
            printf("Stack %d Empty\n", Tag);
            return ERROR;
        
        return S->Data[S->Top2++];
    
View Code

 

以上是关于6-7 在一个数组中实现两个堆栈 (20 分)的主要内容,如果未能解决你的问题,请参考以下文章

4-7 在一个数组中实现两个堆栈

包含MIN函数的栈+一个数组实现两个堆栈+两个数组实现MIN栈

Angular 2:将 *ngFor 增加 2 或在分页中实现两个分页

使用具有自动调整大小的默认整数数组在java中实现堆栈

如何在swift中实现数组的深拷贝

如何在具有两个属性、每个属性的必要权重和最小总值的 3d 数组中实现背包算法?