您的位置:首页 > 其它

两栈共享空间

2017-06-18 20:09 302 查看
/*

两栈共享空间

*/

//存储结构定义

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++];        

    }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: