栈和队列教案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
教案
课程名称:数据结构(C语言版)授课班级:技校二年级学生
授课学时:1学时
授课章节:第三章栈和队列课型:理论课
任课教师:***
一下,地铁到终点站后想要再原路返回,向另一个方向出发,地铁是怎样调整方向的呢大家可以先在心里想一下,看是否与我们这节课所介绍的方法一致。
图1 地铁站入站出站
再比如我们餐厅中一叠一叠的盘子,如果它们是按
1,2,3,……,n的次序往上叠的话,那么使用的次序应该是什么样的
必然是依从上往下的次序,,即n,......,3,2,1。
它们遵循的是规律正是本节课要讨论的“栈”的结构特点。
对图1 进行抽象,用地铁的每节车厢表示栈中每个元素这样就得到一个栈的示意图,如图2所示
图2 栈的示意图
从图2中可以看出第一个进栈的a1为栈底元素,最后一个进栈的an为栈顶元素,进栈和出栈也是同一个方向。
这也是最基本的栈的示意图。
需要同学们熟知。
其实,要解决这个出站问题就离不开我们今天将要学习的进
约定a n端为栈顶,a1 端为栈底。
基本操作:
InitStack(&S)
操作结果:构造一个空栈 S。
DestroyStack(&S)
初始条件:栈 S 已存在。
操作结果:栈 S 被销毁。
StackEmpty(S)
初始条件:栈 S 已存在。
操作结果:若栈 S 为空栈,则返回TRUE,
否则 FALE。
GetTop(S, &e)
初始条件:栈 S 已存在且非空。
操作结果:用 e 返回 S 的栈顶元素。
StackLength(S)
初始条件:栈 S 已存在。
操作结果:返回 S 的元素个数,即栈的长度。
ClearStack(&S)
初始条件:栈 S 已存在。
操作结果:将 S 清为空栈。
Push(&S, e)
初始条件:栈 S 已存在。
操作结果:插入元素 e 为新的栈顶元素。
Pop(&S, &e)
初始条件:栈 S 已存在且非空。
操作结果:删除 S 的栈顶元素,并用 e 返回其值。
StackTraverse(S,visit())
初始条件:栈 S 已存在且非空。
操作结果:从栈底到栈顶依次对S 的每个数据元素调用函数visit()。
一旦visit()失败,则操作失效。
}ADT Strack
三、练习与拓展(16分钟)
1.练习(解决问题)
回到地铁到达终点站时的
入站出站问题。
请同学们对右图
栈的示意图中进栈序列依次为
{a,a,a,a,a,a},进行出栈序列
排序。
根据前面提出的栈的特点
是不是可以很容易的得出这个
序列的出栈序列呀。
出栈序列为:a,a,a,a,a,a
大家可以看看现在的解决方案与提出规划的方法是否一致。
由此也可以看出该技术的重要。
同学有没有觉得出栈序列还是很容易得到的,有没有感觉栈的知识也没有很难呀
根据以上对栈的理解,现在提出一个进栈出栈更宽泛的规则,让同学们感受到栈的知识的有趣性和多变性。
注:进栈时除了一次性全部进栈之后再出栈的规则之外,其实还可以进栈元素进去一个或两个之后直接出栈,出栈可以不必都出完,接着进栈随时可以出栈。
比如上述题中出栈序列也可以为如下序列:任务驱动
解决问题练习法
学以致用,当堂巩固。
知识补充
序列1:a,a,a,a,a,a
序列2:a,a,a,a,a,a
序列3:a,a,a,a,a,a
? ? ? ? ? ?
同学们有没有感觉根据栈的入栈方式不同可以产生不同的出栈序列,是不是栈的出栈序列很灵活,就像我们生活中的趣事一般。
同学们发现栈和线性表的相似了没有呢
下面我画一个顺序存储结构的线性表线性表,同学们观察一下它们是不是很相似呢
2.拓展
(1)设依次进入一个栈的元素序列为c,a,b,d,则可得到出栈的元素序列是:
A)a,b,c,d B)c,d,a,b C)b,c,d,a D)a,c,d,b
请同学们想一下上面的序列哪些可以根据进栈顺序得到,哪些得不到呢
解:A、D可以( B、C不行)
同学们对一下看看给出的答案跟你们心中的答案是否一致呢
有不理解的同学可以举手提问哦。
下面再来解答一个题,巩固巩固今天所学过的知识。
(2)数制转换
算法基于原理:N = (N div d)×d + N mod d
例如:(1348)10 = (2504)8 ,
其运算过程如下:
同学们想到答案了吗
3.思考
栈往往用单链表实现。
可以用双链表吗哪个更好
这个问题同学们课后思考一下,下节课我们来解答。
大家要掌握栈的特点,这是栈的重点。
大家只要多练习、多思考、多归纳、多总结,就一定能熟练掌握。
我们学过的知识。
同学们加油哦!助于提高学习效率和质量。
布置作业(3分钟)
1.书面作业:设有一顺序栈S,元素s1,s2,s3,s4,s5,s6
依次进栈,如果6个元素出栈的顺序是s2,s3,s4,?s6?,?s5,s1,
则栈的容量至少应该是()
????????????B.?3?????????????????C.?5?????
2.思考:
hanoi塔问题
传说在创世纪时,在一个叫Brahma的寺庙里,有三个柱子,
其中一柱上有64个盘子从小到大依次叠放,僧侣的工作是将这
64个盘子从一根柱子移到另一个柱子上。
移动时的规则:
每次只能移动一个盘子;
只能小盘子在大盘子上面;
可以使用任一柱子。
当工作做完之后,就标志着世界末
日到来。
动手动脑,
全面发展。
培养学生独立
思考能力,学
会合作学习法
板书设计
§栈
一、定义:限定仅在表尾进行插入或删除操作的线性表。
先进后出
二、特点:
后进先出
三、练习与拓展
配合课件的板书区。