两栈共享空间

/*
两栈共享空间
*/

//存储结构定义

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++];        
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值