定义
只允许在一端进行插入或删除操作的线性表
注:考试中用结构体声明,不用结构体指针。
S.top=-1
时栈为空
结构体
typedef struct{
int data[50];
int top;
}SqStack;
入栈
先加1,再做运算
S.top=S.top+1;
S.data[S.top]=1;
出栈
后减减
x=S.data[S.top];
S.top=S.top-1;
实现
定义结构体
栈中可设为含数据和栈顶的位置标记两种元素,因此有:
#define MaxSize 50
typedef int ElemType;
typedef struct{
ElemType data[MaxSize];
int top; //指向栈顶
}SqStack;
声明并初始化栈
main中申明,后创建并调用初始化函数。初始化函数如下:
void InitStack(SqStack &S){
S.top=-1; //栈为空
}
判断栈是否为空
main中调用,判断函数如下:
bool StackEmpty(SqStack S){
if(-1==S.top){
return true;
}else{
return false;
}
}
数据入栈
先判断数据是否塞满了,没有则自加再添加数据
bool Push(SqStack &S,ElemType x){
if(S.top==MaxSize-1){
return false;
}
S.data[++S.top]=x;
return true;
}
获取栈顶元素
先判断栈是否空,再取值
bool GetTop(SqStack S,ElemType &x){
if(StackEmpty(S)){
return false;
}else{
x=S.data[S.top];
return true;
}
}
弹栈
先判断栈是否空,取出后S.top
再减1
bool Pop(SqStack &S,ElemType &x){
if(StackEmpty(S)){
return false;
}else{
x=S.data[S.top--];
return true;
}
}
评论