• [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++];
        }
    }
    
  • 相关阅读:
    记录操作日志
    sql优化【转】
    JS事件
    MFC电子词典
    控制台电子词典---链表
    控制台电子词典
    贪吃蛇
    十六进制转化
    进程线程
    面试体复习
  • 原文地址:https://www.cnblogs.com/ruoh3kou/p/9977315.html
Copyright © 2020-2023  润新知