栈(stack)又被称为堆栈,它是一种只允许在一端(一般是表尾)进行插入和删除操作的线性表。
作为一种特殊的数据结构,由于栈被限定只能在尾进行插入和删除操作,所以它也被认为是一种受限的线性表。
而栈顶指的是允许插入和删除元素的一端,栈低指的是不允许插入和删除元素的一端。由于只能在一端进行操作,我们把栈称为是一种后进先出(LastInFirstOut)也称为LIFO的线性表。
与线性表一样,栈也分为顺序栈和链栈,那么在本篇文章中,我们先来看看如何使用c++代码初始化顺序栈以及它的一些相关操作。
1,初始化操作:
#includestdio.h
#includestdlib.h
#includemalloc.h
#defineMaxSize10
typedefstruct{
intdata[MaxSize];
inttop;
}SqStack;
voidInitStack(SqStacks){
s.top=-1;
}//其实顺序栈的初始化就是定义了一个结构体类型的变量s,然后将栈顶指针top赋值为-1
一个顺序栈2,入栈操作:
boolPush(SqStacks,intx){
if(s.top==MaxSize-1){
returnfalse;
//TODO
}//如果栈顶指针等于MaxSize-1则表示栈满
s.top=s.top+1;//将栈顶指针上移
s.data[s.top]=x;//将x放入栈顶的空间中
returntrue;
}
3,出栈操作:
boolPop(SqStackS,intx){
if(S.top==-1){
returnfalse;
//TODO
}//如果top指针为-1,则该栈为空栈
x=S.data[S.top];//将目前栈顶元素的值赋值给x
S.top=S.top-1;//栈顶指针下移
returntrue;
}
本篇文章到此就结束了,欢迎大家