#数据#在本篇文章中,作者将与大家一起了解顺序栈的判断栈空,栈满操作,取栈顶元素操作,以及共享栈的相关内容。
如何使用代码取判断一个顺序栈是否为空其实非常简单,因为我们在最开始会将栈顶指针top赋初值为-1或0,那么我们就可以以此进行判断,以下是c++代码:
boolStackEmpty(SqStacks){
if(s.top==-1){
returntrue;
//TODO
}else{
returnfalse;
}
}
知道了如何实现判断顺序栈空操作,那么判断栈满也是一样的,以下是c++代码:
boolStackNOEmpty(SqStacks){
if(s.top==MaxSize-1){
returntrue;
//TODO
}else{
returnfalse;
}
}
取栈顶元素操作其实是出栈操作的一个简化,在此操作中,只要将栈顶元素赋值给e,而无需移动栈顶指针,以下是c++代码:
boolGetTop(SqStackS,intx){
if(S.top==-1){
returnfalse;
//TODO
}
x=S.data[S.top];
returntrue;
}
值得注意的是,由于顺序栈同顺序表类似,都是直接申请一整片内存空间且大小不可变,这很可能导致内存的浪费。
而共享栈就可以较好地解决这一问题,共享栈是什么呢?它其实就是两个顺序栈共享一个内存空间,此时我们定义top0,top1两个栈顶指针,其初值分别为-1和Maxsize。
当元素入栈时,top1下移,top0上移,直到top0+1等于top1时,此栈就满了。以下是c++代码:
#includestdio.h
#includestdlib.h
#includemalloc.h
#defineMaxSize10
typedefstruct{
intdata[MaxSize];
inttop0;
inttop1;
}SqStack;
voidInitStack(SqStacks){
s.top0=-1;
s.top1=MaxSize;
}
本篇文章到此就结束了,欢迎大家