第3章 限定性线性表—栈和队列 ;3.1 什么是栈?;后缀表达式 ;对象: 6 (运算数 );栈(Stack):具有一定操作约束的线性表
?只在一端(栈顶,Top)做 插入、删除 ;图3.1 栈 ;栈的抽象数据类型描述
ADT Stack{
数据对象集:一个有0个或多个元素的有穷线性表。
基本操作:
(1) InitStack(S)
初始条件: S为未初始化的栈。
操作结果: 将S初始化为空栈。
(2) ClearStack(S)
初始条件: 栈S已经存在。
操作结果: 将栈S置成空栈。 ; (3) StackEmpty(S)
初始条件:栈S已经存在。
操作结果:若S为空栈,则函数值为TRUE,否则FALSE
(4) Push(S,e)
初始条件:栈S已经存在。
操作结果:在S的顶部插入(亦称压入)元素e;; (5) Pop(S, e)
初始条件:栈S已经存在。
操作结果:删除(亦称弹出)栈S的顶部元素,并用e带回该值。
(6) GetTop(S, e)
初始条件: 栈S已经存在。
操作结果:取栈S的顶部元素。与Pop(S, e)不同之处在于GetTop(S,e)不改变栈顶的位置。;Push 和 Pop 可以穿插交替进行;
按照操作系列
(1)Push(S,A), Push(S,B),Push((S,C),Pop(S),Pop(S),Pop(S)
栈输出是?
(2) 而Push(S,A), Pop(S),Push(S,B),Push((S,C),Pop(S),Pop(S)
栈输出是?
[例] 如果三个字符按ABC顺序压入堆栈
?ABC的所有排列都可能是出栈的序列吗?
?可以产生CAB这样的序列吗?
;3.1.2 栈的表示和实现 ;图3.2 顺序栈中的进栈和出栈 ;顺序栈基本操作的实现如下:
(1) 初始化。 ;(2) 取栈顶元素
Status GetTop(SqStack S, SElemType e){
if (S.top = = S.base) return ERROR;
e= * (S.top-1);
return OK;
};(3) 入栈。
Status Push(SqStack S, SElemType e){
if (S.top - S.base= S.stacksize){
S.base=(SElemType*)realloc(S.base,
(S.stacksize+STACKINCREMENT)*sizeof(SElemType));
if(!S.base) exit(OVERFLOW);
S.top=S.base+S.stacksize;
S.stacksize+=STACKINCREMENT;
}
*S.top++=e;
return OK;
} ;(4) 出栈
Status Pop(SqStack S, SelemType e){
if( S.top= =S.base) return ERROR;
e=*--S.top;
return OK;
}; 在栈的共享技术中最常用的是两个栈的共享技术:它主要利用了栈“栈底位置不变,而栈顶位置动态变化”的特性。首先为两个栈申请一个共享的一维数组空间S[M],将两个栈的栈底分别放在一维数组的两端,分别是0、M-1。由于两个栈顶动态变化,这样可以形成互补,使得每个栈可用的最大空间与实际使用的需求有关。由此可见,两栈共享比两个栈分别申请M/2的空间利用率高。;图3.3 共享栈 ;2. 链栈 ;3.2 栈的应用:表达式求值
? 回忆:应用栈实现后缀表达式求值的基本过程:
从左到右读入后缀表达式的各项(运算符或运算数);
1.运算数:入栈;
2.运算符:从栈中弹出适当数量的运算数,计算并结果入栈;
3.最后,栈顶上的元素就是表达式的结果值。 ;中缀表达式求值
基本策略:将中缀表达式转换为后缀表达式,然后求值
如何将中缀表达式转换为后缀?
观察一个简单例子: 3 + 4 * 5 -6 ? 3 4 5 * + 6 –
1.运算数相对顺序不变
2.运算符号顺序发生改变
需要存储“等待中”的运算符号
要将当前运算符号与“等待中”的最后一个运算符号比较 ;〖例〗 3
您可能关注的文档
最近下载
- 八年级语文下册第一单元的知识要点梳理.docx VIP
- Sony索尼耳机WH-1000XM2用户手册.pdf
- 2025贵州省高考政治真题试卷+解析及答案.docx VIP
- OPPO Find X9 快速指南说明书用户手册.pdf
- 2025年高一物理寒假衔接讲练 (人教版)第05讲 实验综合练(教师版).docx VIP
- 跨境电商客户关系管理课件.pptx VIP
- 2025年8月23日注册会计师会计第一场考试真题和答案.docx
- 2025-2026学年高二物理期末模拟卷【测试范围:必修三+选修一】(考试版)(人教版).docx VIP
- 2025年高一物理寒假衔接讲练 (人教版)第03讲 牛顿第二定律及其应用(教师版).docx VIP
- McgsPro软件使用教程_V1.0.pdf VIP
原创力文档

文档评论(0)