摘要:本文根据高等职业院校学生的特点,从提高学生的实验能力出发,结合教学实践的经验,讨论了基于Java语言的“数据结构”课程的实验方法。
关键词:Java语言;实验;算法
“数据结构”是高等职业技术学院(以下简称高职)计算机相关专业的一门重要专业基础课,重点讨论计算机数据处理领域的方法问题,具有概念较为抽象、方法灵活、强调逻辑思维能力的特点。对于高职学生来说,这是一门难度较大、实践性强的课程。
实验是本课程教学的重要组成部分,是帮助学生加深对教学内容的理解,提高学生利用程序设计语言实现算法,提高严密逻辑思维能力不可缺少的组成部分。由于Java语言是一种完全面向对象的程序设计语言,因此在提高程序的复用性和安全性时,在不同类的资源配置方面,较面向过程的程序设计语言有更高层面的要求,这给基础薄弱的学生完成实验带来很大困难,因此我们需要在要求上、结构上、方法上重新组织和设计实验。
1实验要求分析
1.1基本要求
掌握不同逻辑结构的基本算法,并通过程序加以验证。在实验的总体结构中实现函数的编写、调试,并通过调用测试验证其准确性。这是每个学生都必须完成的部分。
1.2提高性要求
(1) 编写在基本算法上进行修改的算法。
(2) 能够使用课程提供的逻辑结构和物理结构实现其他拓展性实验,如统计二叉树的结点个数等,开拓学生的思路,提高学生分析问题、解决问题的能力。
(3) 灵活应用编写的函数,实现不同的功能要求,如利用队列实现单链表的逆序排列,培养学生对实验总体结构配置、函数外特性的认识。
这部分实验主要针对基础较好的同学,为他们提供发挥能力的空间,有效提高他们的学习兴趣。[4]
1.3扩展性要求
部分学生学习基础较差,对类的认识较模糊,对函数在程序设计中的作用缺乏认识,需要在函数的作用、函数的编写及函数的调用等方面加强实验。
2实验作业的设计
2.1作业的说明和任务
说明:介绍实验使用的类及实验的结构构成。
任务:指明需要编写的函数及相应的调用要求。
2.2相关的类
提供完成实验所使用的类。
2.3作业主体
包括实验的总体结构及需要编写的函数,对于编写的函数只给出函数名,要求完成整个函数;在整个结构中以填空方式调用函数。对于提高性的实验部分,以文字、图示方式给出提示,加以引导。
根据课程的要求和学生的现状设计客观、可行的作业。一要以符合人们认识事物的特点加以引导,避免因为作业难度太大挫伤学生的学习热情;二要达到预期的实验目的。因此在作业组织中要做到有说明,对整体结构加以介绍;有提示,给学生完成实验的思路;有参照,对有一定难度的任务给出具有参考价值的函数。
3实验的实施
3.1实验准备
实验前开设实验指导课,说明和分析实验作业的构成、注意点及实验所涉及的类,介绍和分析与实验有关的算法。
3.2实验过程
加强现场指导,注意与学生的交流、沟通,及时发现学生的困难,有针对性地帮助学生提高认识、解决问题。为了提高实验效率,提示学生注意类的小型化、原子化,提高他们发现问题和解决问题的能力。
3.3实验结果分析
实验完成后进行总结,对实验作业进行分析,主要讨论实验中的一些普遍问题,不仅有对算法的分析,还有对实现算法所用的存储结构、实现过程的要素和环节的讨论,帮助学生总结实现算法的内在规律。[5]
4编写函数的提示举例
下面以编写函数rev()为例,实现将单链表中的数据按相反的顺序存储的功能。
提示:
4.1基本过程1
(1) 将单链表拆分成两个部分,附加表头结点单独列出,建立一个空的单链表(称为单链表1),其余部分构成一个无附加表头结点的单链表(称为单链表2)。
(2) 当单链表2不空时,取出第一个结点,插在单链表1的表头位置(即附加表头结点之后)。
(3) 重复②操作,直到单链表2为空。[3]
4.2基本过程2
当单链表不为空时,先将HL指向表头结点,即表头附加结点的后一个结点,然后将表头附加结点的next域设置为NULL,依次从单链表中取出表头结点,将其插入表头附加结点之后。[1][2]
以上过程如图1~图5所示。
图1初始情况
图2拆分成两个单链表
图3取单链表的第一个结点
图4插入第一个结点
图5插入第二个结点
5结束语
由于采用了以Java语言为算法的实现语言,“数据结构Java语言描述”课程对高职学生提出了更高的要求,而如何通过Java语言实现算法一直是本课程的一个难点。因此,要设计合理有效的实验环节,除了组织切实可行的实验作业外,还要加强引导、分析和总结,从学期开始的全程指导到逐步放手,帮助学生在学习过程中发挥积极的作用。由于本课程是我系近年来才开设的(以前采用C/C++语言描述),因此课程的实验组织还需要进一步完善。
参考文献:
[1] 朱战立. 数据结构-Java语言描述[M]. 北京:清华大学出版社,2005.
[2] Duane A.Bailey. 数据结构-Java语言描述[M]. 北京:清华大学出版社,2004.
[3] 殷人昆. 数据结构[M]. 北京:清华大学出版社,2001.
[4] 杨桂芝.“数据结构”教学方法探索与实践[J]. 计算机教育,2007(6):8-9.
[5] 王红.“Java语言程序设计”课学生能力的培养[J]. 计算机教育,2007(15):31-32.
(编辑:张玥)