两栈共享空间

/*
两栈共享空间
*/

//存储结构定义

const int StackSize = 10;
typedef int DataType;
typedef struct
{
    DataType data[StackSize];
    int top1,top2;            //分别为各自栈顶元素在数组中的下标
}BothStack;

//入栈操作

void Push(BothStack &S,int i,DataType x)
{
    if(S.top1 == S.top2 – 1)
    {
        printf(“下溢”);
        exit(-1);            //判断是否栈满
    }
    if(i == 1)
        S.data[++S.top1] = x;        //在栈1插入
    if(i == 2)
        S.data[–S.top2] = x;        //在栈2插入
}

//出栈操作:当top1指向-1时,栈1为空,当top2指向StackSize时栈2为空,当从栈2删除元素,栈顶指针top2加1

DataType Pop(BothStack &S,int i)
{
    if(i == 1){
        if(S.top1 == 1)
        {
            printf(“下溢”);
            exit(-1);
        }
        return S.data[S.top1–];
    }
    if(i == 2){
        if(S.top2 == StackSize)
        {
            printf(“下溢”);
            exit(-1);
        }
        return S.data[S.top2++];        
    }
}

点赞