zoukankan      html  css  js  c++  java
  • [PTA] 数据结构与算法题目集 6-7 在一个数组中实现两个堆栈

    //如果堆栈已满,Push函数必须输出“Stack Full”并且返回false;如果某堆栈是空的,则Pop函数必须输出“Stack Tag Empty”(其中Tag是该堆栈的编号),并且返回ERROR。
    Stack CreateStack(int MaxSize)
    {
        Stack sta = (Stack)malloc(sizeof(struct SNode));
        sta->Data = (ElementType*)malloc(MaxSize*sizeof(ElementType));
        sta->Top1 = -1;
        sta->Top2 = MaxSize;
        sta->MaxSize = MaxSize;
        return sta;
    }
    bool Push(Stack S, ElementType X, int Tag)
    {
        if (S == NULL)
            return false;
        if (S->Top1 + 1 == S->Top2)
        {
            printf("Stack Full
    ");
            return false;
        }
        if (Tag == 1)
        {
            S->Data[++S->Top1] = X;
        }
        else
        {
            S->Data[--S->Top2] = X;
        }
        return true;
    }
    ElementType Pop(Stack S, int Tag)
    {
        if (S == NULL)
            return ERROR;
        if (Tag == 1)
        {
            if (S->Top1 == -1)
            {
                printf("Stack %d Empty
    ", Tag);
                return ERROR;
            }
            return S->Data[S->Top1--];
        }
        else
        {
            if (S->Top2 == S->MaxSize)
            {
                printf("Stack %d Empty
    ", Tag);
                return ERROR;
            }
            return S->Data[S->Top2++];
        }
    }
    
  • 相关阅读:
    UVa 1374
    天梯赛L3 004
    redis操作ZSet
    redis操作set集合
    mybatis使用注解开发
    SSM整合之mybatis的别名配置
    mybatis的5.1.10分页插件的使用
    lombok的使用
    JDBC的一个简单工具类
    mybatis的测试
  • 原文地址:https://www.cnblogs.com/ruoh3kou/p/9977315.html
Copyright © 2011-2022 走看看