《数据结构》教学实践经验谈
来源:用户上传
作者: 刘海芹
摘要:针对《数据结构》课程本身的特点,结合近几年的教学实践。本文总结了几点教学经验,供大家参考。
关键词:逻辑结构 存储结构 算法 排序 多媒体
大量数据的表示方法和组织形式直接关系到程序对数据的处理效率,于是就要求人们对计算机加工的对象进行系统的研究,即研究数据的特性、数据之间的关系,以及如何有效地组织、管理、存储这些数据,从而提高计算机处理各种数据的效率。《数据结构》正是为解决这些问题而进行研究的一门课程,该课程的最大特点就是理论性逻辑性强、抽象想高。针对其特点,结合近几年的教学实践,笔者总结了如下几点经验。
一、打消学生学习《数据结构》无用的思想
针对部分学生认为学了《数据结构》没有用的思想,可以向他们讲明学好《数据结构》是计算机专业学生基本素质所要求的,是对计算机水平和能力的一个提升,是学好程序设计的基础。比如,可以这样来引导:在《C语言程序设计》一门课中,如果要存储大批数据,怎样存储?用什么来存储?学生想到的首先应该是数组。那么再问,像红楼梦中的贾氏家谱又怎样存储呢?把家谱中的人名看成是数据,人名和人名之间还有一种层次关系,它们的关系就像一棵树一样,怎样存储这些数据,还得同时体现它们之间的关系呢?这个时候,学生肯定是不知道怎么办了,而且很想知道答案。此时告诉他们,《数据结构》会帮我们找到答案,用二叉链表就可以实现。学生明白了这个道理之后,从一定程度上可以打消学习《数据结构》无用的思想。
二、着重讲解数据结构的一些基本概念
学生对概念理解得透彻,有助于后面逻辑性强的知识的学习。可以说一些关键的基本概念的透彻理解是打开《数据结构》这门课的一把钥匙。以下这两个概念就是非常关键的:数据的逻辑结构,是从逻辑上来描述数据之间的关系,是让人(程序员)来看的,可以用图形或数学形式来描述,它包括数据元素和数据元素之间的关系两部分;数据的存储结构,就是指人构造出来的逻辑结构在计算机中怎样存储,既要存储逻辑结构中的数据元素,还要存储数据元素之间的关系。
三、数据结构的前续课程是程序设计基础
在讲授数据结构具体内容前,首先介绍数据结构所必需的知识储备。明确数据结构是计算机科学的基础课程,且是必修课程,也是考研或从事计算机实际工作不可缺少的理论基础,它的前续课程是程序设计基础。但是,笔者在实际的教学过程中发现,有相当一部分学生的程序设计基础不好,特别是对指针部分理解得不是很透,而《数据结构》第2章中的单链表就涉及大量的指针的操作,这让很大一部分学生在思维上一时转不过弯来。接受不了链表这种存储结构。解决办法就是,抽出2个课时的时间给学生重新讲解指针部分的关键内容,并和单链表部分的知识做自然的过渡、连接,这样学生不但能及时地理解掌握单链表这部分知识,而且非常有利于后续知识的接受。
四、特别注重启发式教学在数据结构课堂教学中的应用
由于数据结构本身的枯燥乏味和算法的复杂性,学生容易产生畏难和厌倦情绪。教学中,可以多提出一些和实际应用相关的有意义的问题,提高学生的学习兴趣。比如,在讲解快速排序的思想时,其基本思想是给基点找位置,选取无序区的第一条记录做为基点并暂存,然后,必须从无序区的最后一条记录开始向左扫描,将记录关键字逐一和基点的关键字比较。如果比基点大则不动,也不改变扫描方向,如果比基点小则向左边放,并同时改变扫描方向;一旦发生记录的移动即改变扫描方向(结合图示进行讲解)。设问:为什么必须从右端开始扫描。而不能从左端呢?如果从左端开始,又会有什么样的后果呢?原因是,如果从左端开始扫描,一旦发现有比基点大的记录就应向右端放,这样就把无序区最右端的记录给覆盖了,即最右端的记录就丢失了。从右端扫描则不会出现这样的情况。因为在将右端比基点小的记录向左端放的时候,最左端的记录已经作为基点保存起来了,不会造成记录的丢失。
五、穿插使用多媒体辅助数据结构课堂教学
笔者不赞同对数据结构的教学过程全部使用多媒体,虽然多媒体有着生动、形象、图文并茂以及交互性好等特点,但其交互性无论如何也比不上传统的用黑板授课的方式,用多媒体教学很多时候会阻碍教师思维的自然发挥。教师的很多肢体语言的灵活性也是多媒体无法企及的。所以,最好是在讲解比较复杂的过程的时候使用多媒体辅助教学,如,图的深度优先搜索遍历过程和过度优先搜索遍历过程,利用普里姆算法或克鲁斯卡尔算法构造最小生成树的过程等。
六、注意对存储结构的综合比较
在讲解了几种存储结构以后,就应结合实际应用对它们进行综合分析比较。例如,在讲完了顺序表与链表之后,就应总结它们的优缺点,举例分析每种存储结构适合什么样的应用,比如。在成绩查询系统中,由于查询、排序操作较多,插入、删除操作较少,就可以考虑用顺序表的方式来存储数据。
七、淡化算法的具体实现语言,强调其思想流程,开阔学生的思维发挥空间
算法是《数据结构》中的重要组成部分,几乎每一章每一节都有各自的算法。而目前所有教材都是基于某一种语言编写的,有类Pascal语言、类C语言、C/C++语言,等等。不管是什么语言,一旦将程序给出,就完全禁锢了学生的想象空间,学生只能一味地去理解程序的语句、过程和函数,而忽视对算法思想和所用数据结构的思考。因此在课堂教学中,算法讲解后应给出抽象的流程,让学生选择自己熟悉的具体语言和适当的数据结构。这样不仅可以解决由于学生语言的不足而影响算法掌握的难题,同时也给学生留出了足够的发挥聪明才智的空间。
八、教学实践体验
只有在不断地总结经验教训的同时,不断地改进自己教学的各个方面。教师才能不断提高自己的教学水平,进而培养出更多的优秀人才,为社会发展贡献力量。
转载注明来源:https://www.xzbu.com/9/view-994471.htm