初始条件:栈 S 已存在且非空。 操作结果:删除 S 的栈顶元素,并用 e 返回其值。
.
15
栈的抽象数据类型定义
StackTraverse(S, visit( )) 初始条件:栈 S 已存在且非空,visit( )为元素的访问
函数。 操作结果:从栈底到栈顶依次对S的每个元素调用函数
visit( ),一旦visit( )失败,则操作失败。 } ADT Stack
.
29
3.1.2.2 栈的静态顺序存储表示
4 弹栈(元素出栈)
Status pop( SqStack S, ElemType *e ) /*弹出栈顶元素*/ { if ( S.top==0 ) return ERROR ; /* 栈空,返回错误标志 */ *e=S.stack_array[S.top] ; S.top-- ; return OK ; }
.
11
3.1.1 栈的基本概念
2 栈的抽象数据类型定义
ADT Stack{ 数据对象:D ={ ai|ai∈ElemSet, i=1,2,…,n,n≥0 } 数据关系:R ={<ai-1, ai>|ai-1,ai∈D, i=2,3,…,n } 基本操作:初始化、进栈、出栈、取栈顶元素等
} ADT Stack
进栈(push) 出栈(pop)
top
an
⋯⋯
ai ⋯⋯
a2
bottom
a1
图3-1 顺序栈示意图
.
6
栈的示意图
入栈
• 特点
• 先进后出(FILO) 出栈 • 后进先出(LIFO)
栈顶 栈顶 栈顶
a3 a2
插入:入栈、进栈、压栈 删除:出栈、弹栈