通常称,栈和队列是限定插入和删除 只能在表的“端点”进行的线性表。 线性表 栈 队列 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 >| 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 被销毁