什么是顺序栈
顺序栈是一种基于数组实现的栈(Stack)数据结构。栈是一种后进先出(Last In, First Out,LIFO)的数据结构,类似于我们日常生活中的堆叠物体,最后放入的元素最先被取出。顺序栈的主要特点是使用数组来存储栈中的元素,并通过栈顶指针来记录栈顶元素的位置。
栈的定义
静态定义
#define Maxsize 5
typedef struct SqStack{
double data[Maxsize];//定长数组,类型需要什么定义什么
int top;//栈顶下标
}SqStack;
动态定义
#define Maxsize 5
typedef struct SqStack{
double *base;//栈底指针
double *top;//栈顶指针
}SqStack;
栈的初始化
bool Push(SqStack &s,double e){
if(s.top-s.base==Maxsize){
return false;//栈满了
}
*(s.top++)=e;//先给s.top赋值,再++
return true;
}
入栈
bool Push(SqStack &s,double e){
if(s.top-s.base==Maxsize){
return false;//栈满了
}
*(s.top++)=e;//先给s.top赋值,再++
return true;
}
出栈
bool Pop(SqStack &s,int &e){
if(s.base==s.top){
return false;//栈空了
}
e=*(--s.top);//先--,再赋值给e
return true;
}
取栈顶
double GetTop(SqStack s){
if (s.top!=s.base){//如果不是空栈,取栈顶,空栈是s.top==s.base
return *(s.top-1);
}
else{
return -1;
}
}
© 版权声明
若无特殊说明,文章版权归作者所有,请勿转载至任何平台。
THE END
暂无评论内容