通常称,栈和队列是限定插入和删除 只能在表的“端点”进行的线性表。 线性表 栈 队列 Insert(L, i, x) Insert(s, n+1, x)Insert(Q, n+1, x) 1<i<n+1 Delete(L, i) Delete(s, n) Delete(Q, 1) 1<i<n 栈和队列是两种常用的数据类型
通常称,栈和队列是限定插入和删除 只能在表的“端点”进行的线性表。 线性表 栈 队列 Insert(L, i, x) Insert(S, n+1, x) Insert(Q, n+1, x) 1≤i≤n+1 Delete(L, i) Delete(S, n) Delete(Q, 1) 1≤i≤n 栈和队列是两种常用的数据类型
3.1栈的类型定义 3.2栈的应用举例 33栈类型的实现 34队列的类型定义 35队列类型的实现
3.1 栈的类型定义 3.2 栈的应用举例 3.3 栈类型的实现 3.4 队列的类型定义 3.5 队列类型的实现
3.1栈的类型定义 ADT Stack i 数据对象 ∈ ElemNet.i=1.2 0} 数据关系: R1={<a11,a1a1,a1∈D,i=2,…,n} 约定an端为栈顶,a1端为栈底。 基本操作: S ADT Stack
3.1 栈的类型定义 ADT Stack { 数据对象: D={ ai | ai ∈ElemSet, i=1,2,...,n, n≥0 } 数据关系: R1={ | ai-1 , ai∈D, i=2,...,n } 约定an 端为栈顶,a1 端为栈底。 基本操作: } ADT Stack
Initstack (&s) DestroyStack(&s) StackLength(s StackEmpty(s) GetTop(s, &e) Clear Stack(&s) Push(&s,e) Pop(&s, &e) StackTravers(s, visito)
InitStack(&S) DestroyStack(&S) ClearStack(&S) StackEmpty(s) StackLength(S) GetTop(S, &e) Push(&S, e) Pop(&S, &e) StackTravers(S, visit())
InitStack(&s) 操作结果:构造一个空栈S。 DestroyStack(&s) 初始条件:栈S已存在。 操作结果:栈S被销毁
InitStack(&S) 操作结果:构造一个空栈 S。 DestroyStack(&S) 初始条件:栈 S 已存在。 操作结果:栈 S 被销毁
Stack Empty(s) 初始条件:栈S已存在。 操作结果:若栈S为空栈, 则返回TRUE,否则FALE
StackEmpty(S) 初始条件:栈 S 已存在。 操作结果:若栈 S 为空栈, 则返回 TRUE,否则 FALE
StackLength (s) 初始条件:栈S已存在。 操作结果:返回S的元素个 数,即栈的长度
StackLength(S) 初始条件:栈 S 已存在。 操作结果:返回 S 的元素个 数,即栈的长度
GetTop(s, &e) 初始条件:栈S已存在且非空。 操作结果:用e返回S的栈顶 元素。 1a2 ●●●●●●
GetTop(S, &e) 初始条件:栈 S 已存在且非空。 操作结果:用 e 返回 S 的栈顶 元素。 a1 a2 a … … n
Clear Stack (&s) 初始条件:栈S已存在。 操作结果:将S清为空栈
ClearStack(&S) 初始条件:栈 S 已存在。 操作结果:将 S 清为空栈
Push(&s, e) 初始条件:栈S已存在 操作结果:插入元素e为新 的栈顶元素。 1a2 ●●●●●● a e
Push(&S, e) 初始条件:栈 S 已存在。 操作结果:插入元素 e 为新 的栈顶元素。 a1 a2 an … … e