《数据结构》课程教学思考
2011-04-10长江大学电子信息学院湖北荆州434023
(长江大学电子信息学院,湖北 荆州434023)
《数据结构》是计算机和信息类专业的一门重要的专业核心课程,其教学效果直接影响学生对 《数据库技术》、《操作系统》和 《计算机网络》等相关课程的理解。通过该课程的学习,学生可以灵活运用C语言进行编程来解决实际问题。因此,该课程在整个课程体系中占有重要地位。下面,笔者通过分析学生学习该课程中存在的问题,探讨相关改革措施,为 《数据结构》课程教学提供参考。
1 存在的问题
1.1 C语言基础知识掌握不扎实
C语言是学生首先学习的一门计算机编程语言,在理解上有一定难度,而 《数据结构》中为了描述数据结构和实现某些操作,经常用到指针和结构体部分的知识,这属于C语言高级技术部分,学生很难理解和掌握。由于学生对指针和结构体方面的编程等内容十分生疏,学习 《数据结构》课程时就显得力不从心。
1.2 抽象思维能力较差
《数据结构》课程中的数据结构一般指数据间的逻辑结构,如线性表、二叉树和图结构等。虽然教材中配了很多图示,但在实现上述结构的操作时,学生还是感觉内容抽象,不知如何下手,在阅读教材上的算法程序时也难以理解,这使得该课程的教学效果不理想。
2 课程教学改革措施
2.1 加强C语言方面知识教学
《数据结构》是一门实践性很强的课程,其中算法思想很多是用C语言描述的,这就要求熟练掌握C语言。因此,学好该课程的关键就是打好C语言的基础。在课程开始阶段,可将 《数据结构》课程中常用的C语言知识单独作为专题进行讲解,如指针、结构体、数组、自定义类型等内容,以链表结点为例,通常将其定义如下[1]:
首先要学生明白上述定义是对链表中单个结点结构的描述,而不是对整个链表结构的描述。在定义新的结构体类型LNode的同时,使用typedef定义了2个用户自定义类型LNode和LinkList,分别用来定义链表结点变量和指向结点的指针变量。结构体类型LNode中有2个成员,分别代表了结点的数据域和指针域,结点数据域data的数据类型用ElemType来定义,其本身也是一个宏或自定义类型,指针域next是一个指向下一个结点的指针变量。由此可以看出,尽管关于链表结点定义的代码只有几行,却包含了很多C语言方面的知识。只有当学生熟练掌握这些内容后,才能够比较方便地阅读 《数据结构》中的代码,彻底理解每一条语句的含义和整体的功能。
2.2 注重培养学生的抽象思维能力
由于 《数据结构》课程内容抽象,学生理解困难,为此教师应精心组织每一堂课的教学内容。教师应尽量采用多媒体教学,通过使用动画、图示等展示各种数据结构的特征与常见操作,结合程序分析和动画演示将抽象的知识具体化和形象化。以链表中删除某个结点的操作为例(见图1),其存在如下2种情况:
图1 带头结点的单链表示意图
1)当需要删除单链表中指针p所指向的结点的直接后继结点时,复杂度为O(1),其代码如下:
2)当需要删除单链表中指针p所指向的结点时,由于要获取其直接前驱结点的地址,需要从首结点开始进行扫描,检测每个结点的直接后继结点是否为p,即可找到p的直接前驱结点的地址,复杂度为O(n),其代码如下:
从上述教学实例可以看出,通过图示的方法可以比较直观地反映出问题的实质,由此可以解决学生抽象思维能力较差的问题。
3 结 语
针对学生学习 《数据结构》课程中存在的问题,提出了相应教学改革措施,即加强C语言方面知识教学和注重培养学生的抽象思维能力。教学实践表明,采取上述措施后提高了学生学习积极性,课堂教学效果得到明显改善,得到了学生的认可。
[1]严蔚敏,吴伟民.数据结构(C语言版)[M].北京:清华大学出版社,2003.