3.3 栈的表示和实现
1、栈的抽象数据类型定义
ADT Stack{
数据对象:
D={ ai | ai∈ElemSet,i=1,2,3,...,n。n>=0}
数据关系:
R1={ <ai-ai>| ai-1 and ai∈D,i=2,...,n}
约定an端为栈顶,a1端为栈底
基本操作:初始化栈、进栈、出栈、取栈顶元素等。
}ADT Stack
- InitStack(&S) 初始化操作
- 操作结果:构造一个空栈S
- DestroyStack(&S) 销毁栈操作
- 初始条件:栈S已存在
- 操作结果:栈S被销毁
- StackEmpty(&S) 判断S是否为空
- 初始条件:栈S已存在
- 操作结果:若栈S为空栈,则返回TRUE
否则FALSE
- StackLength(&S) 求栈的长度
- 初始条件:栈S已存在
- 操作结果:返回S的元素个数,即栈的长度。
- GetTop(S,&e) 取栈顶元素
- 初始条件:栈S已存在且非空
- 操作结果:用e返回S的栈顶元素
- DestroyStack(&S) 栈置空操作
- 初始条件:栈S已存在
- 操作结果:栈S清为空栈
- Push(&S,e) 入栈操作
- 初始条件:栈S已存在
- 操作结果:插入元素e为新的栈顶元素。
- Pop(&S,&e) 出栈操作
- 初始条件:栈S已存在且非空
- 操作结果:删除S的栈顶元素an,并用e返回其值
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!