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