/* 顺序栈 */
#define MaxSize 50
typedef struct 
{
    ElemType data[MaxSize];
    int top;
} SqStack;

// 栈顶指针:S.top,初始时设置S.top=-1;栈顶元素:S.data[S.top]
// 进栈操作:栈不满时,栈顶指针先加1,再送值到栈顶元素
// 出栈操作:栈非空时,先取栈顶元素值,再将栈顶指针减1
// 栈空条件:S.top==-1;栈满条件:S.top==MaxSize-1;栈长:S.top+1

// 初始化
void InitStack(SqStack &S){
    S.top = -1;
}

// 判断空
void StackEmpty(SqStack &S){
    return S.top == -1 ? true : false;
}

// 进栈
bool Push(SqStack &S, ElemType x){
    if(S.top == MaxSize - 1)
        return false;

    S.data[++S.top] = x;
    return true;
}

// 出栈
bool Pop(SqStack &S, ElemType &x){
    if(S.top == -1)
        return false;

    x = S.data[S.top--];
    return true;
}

// 读取栈顶元素
bool GetTop(SqStack S, ElemType &x){
    if(S.top == -1)
        return fasle;
    
    x = S.data[S.top];
    return true;
}
/* 链式栈 */
typedef struct Linknode{
    ElemType data;
    struct Linknode *next;
} *LiStack;

 

posted @ 2021-10-12 15:15  Daniel_shi  阅读(11)  评论(0编辑  收藏  举报