栈的定义
一、栈的定义和特点
栈 (stack) 是限定仅在表尾进行插入或删除操作的线性表。 因此, 对栈来说, 表尾端有其特殊含义, 称为栈顶 (top), 相应地, 表头端称为栈底 (bottom)。 不含元素的空表称为空栈。假设栈 S = (a1, a2, …,an, 则称 a1为栈底元素, an为栈顶元素。栈中元素按 a1, a2, ···, an的次序进栈, 退栈的第一个元素应为栈顶元素。 换句话说, 栈的修改是按后进先出的原则进行的, 如 图 (a) 所示。 因此, 栈又称为后进先出 (Last In First Out, LIFO) 的线性表。
二、栈的抽象数据类型定义
操作函数名 | 初始条件 | 操作结果 |
---|---|---|
InitStack(&S) | - | 操作结果:构造一个空栈s。 DestroyStack(&S) |
DestroyStack(&S) | 栈s巳存在。 | 栈S被销毁。 |
ClearStack(&S) | 栈S已存在。 | 将S清为空栈。 |
StackEmpty(S) | 栈S巳存在。 | 若栈 s 为空栈, 则返回 true, 否则返回 false。 |
StackLength (S) | 栈S已存在。 | 返回s的元素个数, 即栈的长度。 |
GetTop(S) | 栈S已存在且非空。 | 返回s的栈顶元素, 不修改栈顶指针。 |
Push(&S,e) | 栈S已存在 | 插入元素e为新的栈顶元素。 |
Pop(&S,&e) | 栈s已存在且非空。 | 删除S的栈顶元素,并用e返回其值。 |
StackTraverse(S) | 栈S已存在且非空。 | 从栈底到栈顶依次对S的每个数据元素进行访问。 |