GetTop(S, &e) 初始条件:栈 S 已存在且非空。 操作结果:用 e 返回 S 的栈顶元
素。
a1 a2 … … an
ClearStack(&S) 初始条件:栈 S 已存在。 操作结果:将 S 清为空栈。
Push(&S, e) 初始条件:栈 S 已存在。 操作结果:插入元素 e 为新
的栈顶元素。
栈底
a
3.1 特殊线性表——栈
栈的逻辑结构
例:有三个元素按a、b、c的次序依次进栈,且每个 元素只允许进一次栈,则可能的出栈序列有多少种?
➢ 情况1:
栈顶
栈顶
c
栈顶
b
栈底
a
出栈序列:c 出栈序列:c、b 出栈序列:c、b、a
3.1 特殊线性表——栈
栈的逻辑结构
例:有三个元素按a、b、c的次序依次进栈,且每个 元素只允许进一次栈,则可能的出栈序列有多少种?
返回栈顶元素函数 Status GetTop (SqStack S, SElemType &e) {// 若栈不空,则用e返回S栈顶元素,并返回OK,否则返回ERROR if (S==S.base) return ERROR;
e=*(S-1); return OK; }
压栈函数 Status Push (SqStack &S, SElemType e) {
a1 a2 … … an e
Pop(&S, &e) 初始条件:栈 S 已存在且非空。 操作结果:删除 S 的栈顶元素,
并用 e 返回其值。
a1 a2 … … an-1 an
3.2 栈的表示和实现
顺序栈 链栈
3.2 栈的表示和实现