说教材
1. 教材简析
本节课是《数据结构C语言描述》第三章第一节“栈”的内容。主要包括栈的定义、栈的实现和栈的应用等内容。本节课的内容“栈”是一种非常重要的数据结构,是在前一章线性表的基础上,对其操作进行限定所产生。栈在计算机各种软硬件中应用广泛,在编译原理、操作系统、计算机体系结构里面有很多应用,许多重要的算法使用栈来实现,为学习后续内容作好铺垫。
2. 教学目标
依据《数据结构》教学大纲,设定以下教学目标:
- 理解栈的定义和特点
- 掌握栈的两种实现方式
- 了解栈的简单应用
3. 教学重点和难点
- 重点为栈逻辑结构的特点(限制一端插入删除,先进后出)以及链式栈实现时栈顶位置(栈顶在链表头部)的选择
- 难点为栈在表达式分析中的应用
说教法
1. 教学方法
因为栈与线性表非常相似,所以让学生通过与原有知识内容的比较,引申出新的知识。
通过课堂讨论,不单知道它是怎么实现的,还要理解它为什么是这样实现的。
根据学生普遍程序设计能力弱的特点,在讲解程序中使用黑板来带领学生一步一步写出程序。
2. 教学手段
使用幻灯片展示基本概念、重要结论以及最终的程序实现,使用黑板来引导学生写出程序,使用计算机运行实例程序。
说学法
1. 学习方法
根据已有的知识和新教授的概念,推出其实现的方法。
根据原理,与老师一起动手,一步一步得到程序实现。
2. 能力培养
培养学生计算机程序设计的基本思维,使用栈这种基本数据结构来解决实际问题的能力。
说教学程序
1. 新课导入
因为栈与前一章线性表有相同的逻辑结构,所以通过与线性表的比较导入栈的概念:“线性表是一种可以在任意位置进行插入和删除的线性结构,但是实际接触的线性结构中不都是这样的,比如一叠碗碟,铁路调度站,子弹夹等。”通过生活中这些的实例来对栈有一个初步的感性认识。
2. 新知识的学习
概念部分:通过实例给出栈的定义,并用图形来形象地表示栈的逻辑结构,在图上讲解栈顶、栈底的概念,出栈、入栈的基本操作。讲解操作中突出先进后出的顺序关系。最后给出栈的抽象数据类型(ADT)来完整的认识栈的逻辑结构及其相关的操作。
实现部分:因为学生已经掌握的线性表的实现方法,而栈与线性表非常类似,所以通过栈与与线性表的比较,让学生自己得出栈的两种实现方式:顺序的和链式的。顺序栈的实现方法与顺序表雷同。链式栈使用单链表来实现,就栈顶在单链表的头部还是尾部的问题展开课堂讨论,并得出结论:栈顶是在练表的头部而不是尾部。从而让学生理解链式栈为什么是这样子的。在讲解程序时,使用黑板与学生一起将程序一步一步从无到有的完成。
应用部分:就栈的应用进行举例,包括:数制转换,括号匹配,表达式求值等。
3. 检测训练
为更进一步理解栈的逻辑结构,理解入栈和出栈顺序的关系,让学生练习列举一组元素入栈后各种不同的出栈顺序。为了掌握栈的应用,练习使用栈来实现回文判断。
4. 总结巩固
让学生思考和讨论栈在实际中还可以用在哪些地方,来结束这次课的内容。最后布置作业和实验习题。
说板书设计
(参见幻灯片)