- 1、本文档共40页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构
主讲人:陈红丽
第3章 栈和队列
掌握栈和队列的特点,并能在相应的应用问题中正确选用
熟练掌握栈的两种存储结构的基本操作实现算法,特别应注意栈满和栈空的条件
熟练掌握循环队列和链队列的基本操作实现算法,特别注意队满和队空的条件
掌握表达式求值方法
教学目标
3.1 栈和队列的定义和特点
3.2 案例引入
3.3 栈的表示和操作的实现
3.4 栈与递归
3.5 队列的的表示和操作的实现
3.6 案例分析与实现
教学内容
用铁路调度站表示栈
第7讲
栈(Stack)
1. 定义
2. 逻辑结构
3. 存储结构
4. 运算规则
5. 实现方式
3.1 栈和队列的定义和特点
1. 定义
只能在表的一端(栈顶)进行插入和删除运算的线性表
栈
只能在栈顶运算,且访问结点时依照后进先出(LIFO)或先进后出(FILO)的原则
4.运算规则
栈的运算演示
能否由入栈序列A、B、C、D、E得到出栈序列CBDAE?
A
操作序列:
出栈序列:
① 元素A入栈
② 元素B入栈
③ 元素C入栈
B
C
D
E
DE
操作序列:
出栈序列:
① 元素A入栈
A
② 元素B入栈
B
③ 元素C入栈
④ 元素C出栈
C
C
⑤ 元素B出栈
B
栈的运算演示
能否由入栈序列A、B、C、D、E得到出栈序列CBDAE?
操作序列:
出栈序列:
① 元素A入栈
A
② 元素B入栈
③ 元素C入栈
④ 元素C出栈
C
⑤ 元素B出栈
B
⑥ 元素D入栈
⑦ 元素D出栈
D
⑧ 元素A出栈
A
栈的运算演示
能否由入栈序列A、B、C、D、E得到出栈序列CBDAE?
D
E
操作序列:
出栈序列:
① 元素A入栈
② 元素B入栈
③ 元素C入栈
④ 元素C出栈
C
⑤ 元素B出栈
B
⑥ 元素D入栈
⑦ 元素D出栈
D
⑧ 元素A出栈
A
⑨ 元素E入栈
⑩ 元素E出栈
E
栈的运算演示
能否由入栈序列A、B、C、D、E得到出栈序列CBDAE?
E
435612中到了12顺序不能实现;
135426可以实现。
1.如果一个栈的输入序列为123456,能否得到435612和135426的出栈序列?
练习
练习
A.i
B.n-i
C.n-i+1
D.不确定
C
2.若已知一个栈的入栈序列是1,2,3,…,n,其输出序列为p1,p2,p3,…,pn,若p1=n,则pi为
3.3 栈的表示和操作的实现
“进” =压入=PUSH()
“出” =弹出=POP( )
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 端为栈底。
基本操作:
Push(S, e)
初始条件:栈 S 已存在。
操作结果:插入元素e为新的栈顶元素。
Pop(S, e)
初始条件:栈 S 已存在且非空。
操作结果:删除S的栈顶元素,并用e返回其值。
其他略
} ADT Stack
抽象数据类型栈的定义
写入:v[i]= ai
读出: x= v[i]
压入:PUSH (an+1)
弹出: POP (x)
前提:一定要预设栈顶指针top!
an+1
顺序栈与顺序表
typedef struct {
SElemType *base; // 存储空间基址
SElemType * top; // 栈顶指针
int stacksize; // 允许的最大存储空间
// 以元素为单位
} SqStack;
c
b
a
利用一组地址连续的存储单元依次存放从栈底到栈顶的数据元素。
非空栈中的栈顶指针指向栈顶元素之上的位置
SqStack
…
3
2
1
0
结构体类型
顺序栈的表示
设S是SqStack类型的变量。base是栈底指针,top是栈顶指针。
栈不存在条件
S.base= =NULL
栈空条件
S.top==S.base
栈满条件
S.top-S.base=S.stacksize
c
b
a
…
3
2
1
0
A
B
…
D
E
F
G
顺序栈的表示
构造一个空栈
步骤:
(1)分配空间并检查空间是否分配失败,若失败则返回错误
顺序栈初始化
s
(2)设置栈顶指针
S.top = S.base;
(3)设置栈大小
Status InitStack (SqStack S){
S.base = new SElemType[MAXSIZE];
if (!S.base
您可能关注的文档
- 数学奥林匹克高中训练题214.pdf
- 江南心理特刊.pdf
- 数值分析第三章电子教案欧阳洁.pdf
- 江苏沙钢集团淮钢特钢有限公司.pdf
- 汽车构造 第五章 电控汽油喷射系统.pdf
- 水污染控制2-第二章.pdf
- 课件 项目1-22分析调研数据 撰写调研报告谭爱平 2013年8月.pdf
- 特变电工年报600089年度报告2011年电气机械资产营运特变电工股份有限公司_九舍会智库.pdf
- 六年级英语下册 期末复习 单词与词组 1课件 人教PEP.pdf
- 美国页岩气对中国煤化工影响之二--天然气制甲醇融合中国mto产业链pk内陆煤制烯烃.pdf
- 抢分秘籍10 带电粒子电场中的直线运动、偏转和交变电电场中的应用(三大题型)(原卷版)-2025年高考物理冲刺抢押秘籍.pdf
- 抢分秘籍11 带电粒子在组合场、叠加场中的运动(五大题型)(解析版)-2025年高考物理冲刺抢押秘籍.pdf
- 抢分秘籍11 带电粒子在组合场、叠加场中的运动(五大题型)(原卷版)-2025年高考物理冲刺抢押秘籍.pdf
- 抢分秘籍12 电磁感应中的电路与图像问题(二大题型)(解析版) -2025年高考物理冲刺抢押秘籍.pdf
- 抢分秘籍12 电磁感应中的电路与图像问题(二大题型)(原卷版)-2025年高考物理冲刺抢押秘籍.pdf
- 抢分秘籍14 热力学定律与气体实验定律综合应用(五大题型)(解析版)-2025年高考物理冲刺抢押秘籍.pdf
- 抢分秘籍13 电磁感应中的动力学、能量和动量问题(三大题型)(原卷版)-2025年高考物理冲刺抢押秘籍.pdf
- 抢分秘籍14 热力学定律与气体实验定律综合应用(五大题型)(原卷版)-2025年高考物理冲刺抢押秘籍.pdf
- 抢分秘籍16 振动图像与波动图像的综合应用(三大题型)(解析版)-2025年高考物理冲刺抢押秘籍.pdf
- 抢分秘籍15 光的折射、全反射的综合应用(二大题型)(解析版)-2025年高考物理冲刺抢押秘籍.pdf
文档评论(0)