注意赋值这个地方。
操作包含:栈的定义,Push,Pop,判空,栈顶元素。
#include<iostream>
#define Maxsize 50
using namespace std;
typedef int ElemType;
//定义:顺序栈//
typedef struct{
ElemType data[Maxsize];
int top;//栈顶指针
}SqStack;
//判空//
bool StackEmpty(SqStack S){
if(S.top == -1) return true;//大小都是负的,肯定是空的//
else return false;
}
//进栈//
bool Push(SqStack &S , ElemType x){
if(S.top == Maxsize - 1) return false;
S.data[++S.top] = x; return false;//这个地方是先执行了++操作,后执行了赋值操作
}
//出栈操作
bool Pop(SqStack &S , ElemType &x){//这个地方的x也是引用操作
if(S.top == Maxsize - 1) return false;
x = S.data[S.top --];//先去赋值,然后执行移动指针的操作//
return true;
}
//读取栈顶元素
bool GetTop(SqStack S , ElemType &x){//x:引用操作
if(S.top == -1) return false;
x = S.data[S.top];
return true;
}