什么是顺序栈
顺序栈是一种基于数组实现的栈(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;
}
}
© 版权声明
1. 除特殊说明外,本网站所有原创文章的版权归作者所有,未经授权,禁止以任何形式(包括但不限于转载、摘编、复制、镜像等)发布至任何平台。
2. 论文总结类文章中涉及的图表、数据等素材,版权归原出版商及论文作者所有,仅为学术交流目的引用;若相关权利人认为存在侵权,请联系本网站删除,联系方式:i@smallbamboo.cn。
3. 违反上述声明者,将依法追究其相关法律责任。
2. 论文总结类文章中涉及的图表、数据等素材,版权归原出版商及论文作者所有,仅为学术交流目的引用;若相关权利人认为存在侵权,请联系本网站删除,联系方式:i@smallbamboo.cn。
3. 违反上述声明者,将依法追究其相关法律责任。
THE END
暂无评论内容