一、顺序栈的定义:
#define MaxSize 10 //定义栈中元素的最大个数
typedef struct{
ElemType data [MaxSize] ; //静态数组存放栈中元素
int top; //栈顶指针
}SqStack;
void testStack() {
SqStack S; //声明一个顺序栈(分配空间)
// ...后续操作...
}
初始化操作:
#define MaxSize 10 //定义栈中元素的最大个数
typedef struct{
ElemType data [MaxSize] ; //静态数组存放栈中元素
int top; //栈顶指针
}SqStack;
//初始化栈
void InitStack(SqStack &S){
S.top=-1; //初始化栈顶指针
}
void testStack() {
SqStack S; //声明一个顺序栈(分配空间)
InitStack(S);
// ...后续操作...
}
判断栈空:
//判断栈空
bool StackEmpty( SqStack S){
if(S.top==-1) //栈空
return true;
else //不空
return false;
}
二、进栈操作:
#define MaxSize 10 //定义栈中元素的最大个数
typedef struct{
ElemType data [MaxSize] ; //静态数组存放栈中元素
int top; //栈顶指针
}SqStack;
//新元素入栈
bool Push(SqStack &S,ElemType x){
if(S.top==MaxSize-1) //栈满,报错
return false;
S.top = S.top + 1; //指针先加1
S.data[S.top]=x; //新元素入栈
return true;
}
三、出栈操作:
#define MaxSize 10 //定义栈中元素的最大个数
typedef struct{
ElemType data [MaxSize] ; //静态数组存放栈中元素
int top; //栈顶指针
}SqStack;
//出栈操作
bool Pop( sqStack &S,ElemType &x){
if(S.top==-1) //栈空,报错
return false;
x=S.data[S.topl; //栈顶元素先出栈
S.top = S.top - l; //指针再减1
return true;
}
四、读取栈顶元素操作:
#define MaxSize 10 //定义栈中元素的最大个数
typedef struct{
ElemType data [MaxSize]; //静态数组存放栈中元素
int top; //栈顶指针
}SqStack;
//出栈操作
bool Pop(SqStack &S,ElemType &x){
if(S.top==-1) //栈空,报错
return false;
x=S.data[s.top--]; //先出栈,指针再减1
return true;
}
//读栈顶元素
bool GetTop( sqStack S,ElemType &x){
if(s.top==-1) //栈空,报错
return false;
x=S.data[s.topl; //x记录栈顶元素
return true;