栈
只允许在一端进行插入或删除的线性表
栈顶:允许插入的一端
栈低:不允许
特点:后进先出 Last In First Out
初始化
void InitStack(SqStack &S){
S.top = -1; //初始化栈顶指针,0的位置还没有数据
}
入栈
bool Push(SqStack &5, ElemType x){
if(S.top == MaxSize-1)
return false; //栈满,报错
// S.top = S.top + 1; //指针加一
// S.data[S.top] = x; //新元素入栈
S.data[++S.top] = x;
return true;
}
出栈
bool Pop(SqStack &S, ElemType &x){
if (S.top == -1) //栈空,报错
return false;
// x = S.data[S.top]; //栈顶元素先出栈
// S.top = S.top - 1; //指针再减一
x = S.data[S.top--];
return true;
}
共享栈
typedef struct{
ElemType data[MaxSize];
int top0;
int top1;
}ShStack;
void InitStack(ShStack &S){
S.top0 = -1;
S.top1 = MaxSize;
}
栈满:top0+1 = top1