1.顺序存储实现栈
通过栈顶来添加数据
栈顶为空时,top=-1
#define MaxSize 50
typedef int ElemType;
typedef struct {
ElemType data[MaxSize];//数组存放数据
int top;//top就是数组下标,最初为-1,表示栈空,最多为MaxSize-1代表栈满
}SqStack;
//初始化栈
void InitStack(SqStack &S) {
S.top = -1;
}
//
bool StackEmpty(SqStack S) {
if (S.top == -1)
return true;
return false;
}
bool Push(SqStack &S,ElemType x) {
if (S.top == MaxSize - 1)
return false;//判断栈满了
S.data[++S.top] = x;//也可以写成S.top++; S.data[S.top] = x;
//为什么S.data[S.top]=x; ++S.top;不行
return true;//返回true就是入栈成功
}
//实现栈,可以用数组,也可以用链表,这里使用数组(顺序存储)
int main() {
SqStack S;//先进后出FILO,后进先出LIFO
bool flag;
InitStack(S);
flag = StackEmpty(S);
if (flag) {
printf("栈是空的");
}
Push(S,3);
Push(S,4);
Push(S,5);
return 0;
}
放入3个数据后: