原副标题:简述计算机程序中栈的表述和操作方式
译者 | 宏碁云开发人员国联-高彬滔
全文:责任编辑为我们简述计算机程序中栈的表述和操作方式。
责任编辑撷取自宏碁云街道社区《计算机程序:详尽传授栈的表述、栈的操作方式》,译者:高彬滔 。
1.栈的表述
栈(stack):是只容许在另一端展开填入或是删掉操作方式的algorithms(即概率模型,约莫能认知为挨饿了吐出)
空栈:不含原素的空标准配置 栈顶:表末端 栈底:表末端 进栈次序:a1->a2->a3->a4->a5 出栈次序:a5->a4-a3->a2->a1 2. 对照algorithms和栈INS13ZD方式 2.1 algorithms的INS13ZD方式InitList (&L): 调用表。内部结构两个空的algorithms L,调用内部空间 DestoryList (&L): 封存操作方式。封存algorithms,因此释放出来algorithms L 所挤占的内部空间 ListInsert (&L,i,e): 填入操作方式,在表 L 中的第 i 个边线上填入选定原素 e ListDelete (&L,i,e): 删掉操作方式,删掉表 L 中的第 i 个边线的原素,因此用 e 回到删掉原素的值 LocateElem 2.2 栈的INS13ZD方式InitStack (&S): 调用栈,内部结构两个空栈 S,调用内部空间 DestoryStack (&S): 封存栈,封存并释放出来栈 S 所挤占的内存内部空间 Push (&S,x): 进栈,若栈 S 年满,则将 x 重新加入使之成为新的栈顶 Pop (&S,&x): 出栈,若栈 S 非空,则弹出栈顶原素,并用 x 回到 GetTop (S,&x): 读栈顶原素,若栈 S 非空,则用 x 回到栈顶原素其他常见操作方式:StackEmpty (S): 判断两个栈 S 是否为空,若 S 为空,则回到 true,否则回到 false
3. 次序栈
3.1 次序栈的表述# defineMaxSize 10 //表述栈中原素的最大个数
typedefstruct{
ElemType data[MaxSize]; //静态数组存放栈中的原素
inttop; //栈顶指针
}SqStack; //结构体重命名
声明两个次序栈后就会在内存中分配一整片连续的内部空间,其中内存大小为:MaxSize*sizeof (ELemType)
voidtestStack{
SqStack S; //声明两个次序栈
} 3.2 栈的调用操作方式
由于栈顶指针 top 需要指向此时栈顶原素,所以让 top 指向 0 是不合理的,能调用让 top 指向 – 1; 判断两个栈是否为空,即判断 S.top 是否等于 – 1
调用栈:
voidInittack(SqStack){
SqStack S; //声明两个次序栈
S.top=- 1;
}
判断栈空:
bool StackEmpty(SqStack S){
if(S.top==- 1) //栈空
returntrue;
else
returnfalse; //非空
} 3.3 进栈操作方式
分析:
判断栈是否为空 栈顶指针 + 1 新原素入栈 bool Push(SqStack &S,ElemType x){if(S.top==NaxSize- 1)
returnfalse;
S.top+= 1;
S. data[S.top]=x;
returntrue;
} 3.4 出栈操作方式bool Push(SqStack &S,ElemType &x){
if(S.top==- 1)
returnfalse;
x=S. data[S.top–];
returntrue;
} 3.5 读栈顶原素操作方式bool GetTop(SqStack &S,ElemType &x){
if(S.top==- 1)
returnfalse;
x=S. data[S.top];
returntrue;
} 4. 共享栈
两个栈共享同一片内部空间
# defineMaxSize 10 //定义栈中原素的最大个数
typedefstruct{
ElemType data[MaxSize]; //静态数组存放栈中的原素
inttop0; //0号栈栈顶指针
inttop1; //1号栈栈顶指针
}SqStack;//结构体重命名
调用栈:
voidInitStack(ShStack &S){
S.top0= -1;
S.top1=MaxSize;
} 5. 链栈的表述
进栈 / 出栈都只能在栈顶一段展开 链头作为栈顶typedef structLinknode{ElemType data; //数据域
structLinknode* next; //指针域
}*LiStack //栈类型表述
END
谷歌开发全新搜索引擎Magi,由人工智能技术驱动
🌟 活动推荐
2023 年 5 月 27-28 日,GOTC 2023 全球开源技术峰会将在上海张 江科学会堂隆重举行。
为期 2 天的开源行业盛会,将以行业展览、主题发言、特别论坛、分论坛、快闪演讲的形式来诠释此次大会主题 ——“Open Source, Into the Future”。与会者将一起探讨元宇宙、3D 与游戏、eBPF、Web3.0、区块链等热门技术主题,以及 OSPO、汽车软件、AIGC、开源教育培训、云原生、信创等热门话题,探讨开源未来,助力开源发展。