目录
基本概念
定义
栈(Stack)是只允许在一端进行插入或删除操作的线性表。
特性
后进先出(LIFO)或先进后出(FILO)
代码实现
#define MaxSize 10
//顺序表实现栈
type struct{
ElemType data[MaxSize]; //定义一个静态数组作为栈空间
int top; //存放在栈顶的元素的数组下标,也就是栈顶指针
}SqStack; //Sq:sequence 顺序
基本操作
初始化栈(InitStack(&s))
//顺序表所实现的栈的初始化
void InitStack(SqStack &s){
S.top=-1; //初始化栈顶指针
}
销毁栈(DestoryStack(&L))
进栈(Push(&S,x))
//顺序表所实现的栈的进栈
bool Push(SqStack &S,Elemtype x){
if(S.top==MaxSize-1) //栈满报错
return false;
S.top=S.top+1; //栈顶指针加一
S.data[S.top]=x; //新元素入栈
return true;
}
出栈(Pop(&S,&x))
//顺序表实现的栈的出栈操作
bool Pop(SqStack &S,Elemtype &x){
if(S.top==-1) //栈空时出栈报错
return false;
x=S.data[S.top]; //出栈
S.top=S.top-1; //栈顶指针下移
}
读取栈顶元素(GetTop(S,&x))
//顺序表实现的栈读取栈顶元素
bool GetTop(SqStack S,Elemtype &x){
if(S.top==-1)
return false;
x=S.data[S.top];
return true;
}
判空操作(StackEmpty(S))
//顺序表所实现的栈的判空
bool StackEmpty(SqStack S){
if(S.top==-1)
return true;
else
return false;
}