王于
(安徽电气工程学校 计算机教研室)
摘要:数据结构课程因其理论性强、思维抽象、理解难度较大等特点,传统教学的效果往往不够理想,因此,本文对数据结构课程难教的主要原因作了分析,并就如何提高数据结构课程教学效果,提出在教学方法改革方面的一些见解。
关键词: 数据结构;教学方法;实践教学
数据结构是计算机专业课程体系中的一门重要的综合性专业基础课,主要任务是讨论各种数据结构的逻辑结构、存储结构及相关操作的算法。目的是使学生能够更深入透彻地理解数据结构中逻辑结构和物理结构的基本概念以及有关算法,了解算法的时间分析和空间分析方法,培养良好的程序设计技能,编制高效可靠的程序,进而能解决生活中的实际问题。数据结构课程同时又是基础课和专业课之间的桥梁,其先行课程是计算机应用基础、程序设计语言、线性代数、离散数学等,后续课程有操作系统、编译原理、数据库原理、软件工程等,因此,学好这门课程,对计算机专业学生极为重要。但是,由于数据结构课程理论性强、思维抽象、理解难度较大,如果不能采取有效教学方法,实际教学效果往往不够理想。
笔者根据多年的教学实际,总结出一些方法,通过教学实践取得了较好的效果。
一是围绕主线学习,及时复习和总结。在学习每种数据结构时,主要是围绕其逻辑结构、存储结构和相应运算三个方面的主线索展开,数据的逻辑结构是指数据元素之间逻辑关系,可以看做是从具体问题抽象出来的数据模型,分为线性结构和非线性结构,线性表是典型的线性结构,树和图是非线性结构的代表;存储结构是指数据元素及其关系在计算机存储器内的表示,最主要的存储方式是顺序存储结构,链式存储结构,索引存储方式,散列存储方式;数据的运算是指对数据施加的操作,常用的运算有:查询、插入、删除、更新及排序。在学完每一章后,应要求学生按上述主线整理一遍,进行归纳和小结,使自己学习本课程富有条理性和有序性。
二是利用多媒体辅助教学。多媒体辅助教学是一种崭新的教育技术,它将计算机和多媒体技术直接应用于教学中,是对传统教学方式的有益补充。而数据结构课程着眼于培养学生的抽象思维和创造能力,往往给人的感觉是老师难讲、学生难学,利用多媒体辅助教学手段,就可以改善教学环境和提高教学效率。如果能够把数据结构中的算法执行过程动态模拟演示出来,则可以在一定程度上化抽象为具体,使学生能够更好地理解知识点。
三是加强实践教学的实施,理论和实践相结合。在数据结构的教学中,除了采用传统的理论教学手段,还应该加强实践环节,实践的首要环节首先是要多做习题。习题的作用非常重要,教师根据习题中反映出来的问题要进行及时的总结、归纳和讲评,包括算法的整体思路、分析方法等等。其次是上机实验。通过实验,老师根据学生对知识点的理解掌握情况,布置相应难度的实验题,由学生上机进行编程、调试和运行,使学生了解到数据结构的应用,提高学生的学习积极性和兴趣,锻炼学生的软件设计能力,增强学习的成就感,实践验证算法的正确性,掌握和巩固所学理论知识。安排实验时要注重选题,选题应注重相关课程和实际学习和生活中的应用,题目生动,接近学习和生活实际,学生容易接受和理解,调动学生的积极性。对每个具体的实验题目要求学生给出完整的问题描述、数据描述和算法设计和程序源代码以及测试分析结果。
例如:有52张牌,使它们全部正面朝上,从第二张牌开始,把凡是2的倍数位置上的牌翻成正面朝下,接着从第三张牌开始,把凡是3的倍数位置上的牌,正面朝上的翻成正面朝下,正面朝下的翻成正面朝上。接着从第四张牌开始,把凡是4的倍数位置上的牌按以上相同的规则翻转。依此类推,直到第一张要翻转的牌超过了52为止。统计最后有几张牌正面朝上,以及它们的位置序号。
1.问题描述
根据题意要求,第一张牌正面朝上并自始至终保持不变,其他的牌可能会有正、反面多次翻转。位置是按基数的倍数来计算的,基数从2开始顺序递增。结束的条件是基数递增到大于52为止。
2.输入数据
在程序运行的初始化过程中进行
3.输出数据
正面朝上的牌的位置序号以及它们的总数。
4.算法设计
? (1)数据结构:用长度为52的线性表来表示52张牌,每张牌的信息包含两个部分,牌的位置序号和牌的正、反标识。Card表示牌的位置序号,flag表示牌的正、反标识,以1表示正面,-1表示反面。
由于线性表的长度及表内元素相对固定,因此,线性表可采用顺序存储结构。线性表元素的序号即各张牌的位置序号。
线性表结构如下:
第1张牌、第二张牌……第52张牌 。
每一张牌的信息以结点结构描述如下:
Struct node
{int card;
int flag;
}
?(2)算法描述a.对线性表的数据进行初始化:card=i(1<=i<=52),flag全部设置为1,基数num置为2;b、计数器count=num;c、如果第count张牌的flag=1则令flag=-1,否则令flag=1;d、Count=count+num;如果count小于或等于52,则转c执行,否则执行e;e、Num=num+1,如果num小于或等于52,则转b执行,否则执行f; f、统计线性表能正面朝上的牌的数目,输出。
? (3)程序清单(略)
? (4)算法分析。首先对算法的执行时间进行分析,算法的执行时间是以时间复杂度来衡量的,其次是算法在计算机存储器上所占用的存储空间,是以空间复杂度来衡量的。
总之,数据结构课程的教学要坚持理论与实践相结合,并采用合适的教学方法,就会取得良好的教学效果。
参考文献:
1、严蔚敏,吴伟民. 数据结构(C语言版)[M].北京:清华大学出版社,1996.
2、李平,陈德龙.数据结构(C语言版)[M].北京:电子工业出版社 2001.1.
3、唐策善 ,黄刘生.数据结构[M]. 合肥:中国科技大学出版社 1992.10.
4、胡学刚.数据结构应试指导[M].南京:南京大学出版社,2004.4.
5、闫玉宝,徐守坤,李宁.“数据结构”的实践性教学探讨[J].电脑知识与技术,2008,3(1):99-110