栈
栈的应用
队列
小结
抽象数据类型栈的定义
栈的表示和实现
抽象数据类型栈的定义
基本概念
栈(Stack)是限定仅在表尾进行插入和删除的线性表。
允许插入和删除的一端称为栈顶(top),另一端称为栈底(bottom)
。
栈的特点:后进先出(LIFO)。
如右图所示:
抽象数据类型定义
ADT Stack{
数据对象:D={a
i
|a
i
∈ElemSet,i=1,2,…,n, n 0}
数据关系:R1={<a
i-1
, a
i
> | a
i-1
, a
i
∈
D, i=2,…,n}
约定 a
n
端为栈顶,a
1
端为栈底。
基本操作:
InitStack(&S)
操作结果:构造一个空栈S。
DestroyStack(&S)
初始条件:栈S已存在。
操作结果:栈S被销毁。
ClearStack(&S)
初始条件:栈S已存在。
操作结果:将S清为空栈。
StackEmpty(S)
初始条件:栈S已存在。
操作结果:若栈S为空栈,则返回TRUE,否则返回FALSE。
StackLength(S)
初始条件:栈S已存在。
操作结果:返回S的元素个数,即栈的长度。
GetTop(S, &e)
初始条件:栈S已存在且非空。
操作结果:用e返回S的栈顶元素。
Push(&S, e)
初始条件:栈S已存在。
操作结果:插入元素e为新的栈顶元素。
Pop(&S, &e)
初始条件:栈S已存在且非空。
操作结果:删除S的栈顶元素,并用e返回其值。