共享栈

48 阅读1分钟
结构体
typedef struct
{
    Elemtype data[MAXSIZE];
    int top0, top1;
}ShStack;
插入

i代表插入哪个栈中

//i代表使用哪号栈
bool Push(int i,ShStack &S, Elemtype e)
{
    if(i != 0 && i != 1)
        return false;
    if(S.top0 + 1 == S.top1)    //栈满
        return false;
    if(i == 0)
        S.data[++S.top0] = e;
    else
        S.data[--S.top1] = e;
    return true;
}
出栈
bool Pop(int i, ShStack &S, Elemtype &e)
{
    if(i != 0 && i != 1)
        return false;
    if(i == 0 && S.top0 == -1)  //0号栈为空
        return false;
    if(i == 1 && S.top1 == MAXSIZE) //1号栈为空
        return false;
    if(i == 0)
        e = S.data[S.top0--];
    else
        e = S.data[S.top1++];
    return true;
}
获取栈顶元素
bool GetTop(int i,ShStack &S, Elemtype &e)
{
    if(i != 0 && i != 1)
        return false;
    if(i == 0 && S.top0 == -1)  //0号栈为空
        return false;
    if(i == 1 && S.top1 == MAXSIZE) //1号栈为空
        return false;
    if(i == 0)
        e = S.data[S.top0];
    else
        e = S.data[S.top1];
    return true;
}