浅谈《数据结构》课程教学

2016-03-12 23:06左丹霞
电子测试 2016年17期
关键词:数组数据结构算法

徐 畅,左丹霞

(湖南安全技术职业学院,湖南长沙,410151)

浅谈《数据结构》课程教学

徐 畅,左丹霞

(湖南安全技术职业学院,湖南长沙,410151)

《数据结构》是计算机专业的一门基础课。本文从实践的角度出发,介绍了该课程教学的若干方法和体会,以提高该门课的教学质量。

数据结构;教学改革;教学方法

1 《数据结构》课程介绍

“数据结构”是研究非数值计算的程序设计问题中计算机操作对象(数据)以及它们之间的关系(结构)和操作(算法)等的一门科学。由于其在计算机科学技术中的重要作用,数据结构已成为了计算机专业的一门重要基础课程。课程主要讨论数据的各种逻辑结构、物理结构以及相关的算法,目的是使学生掌握如何把现实世界的客观问题转换为在计算机内的表示形式;学会组织数据、选择算法、设计算法,形成良好的程序设计风格,培养逻辑思维和抽象思维能力,为软件开发奠定坚实的基础;同时也为软件工程、数据库等后续课程打下坚实的理论和实践基础。但由于该课程涉及大量概念、模型及操作算法,理论性强,外加又是一门实践性很强的技术性基础课,所以历来被认为既抽象又深奥难懂。因此这让很多学生刚开始接触这门课时,不知其所以然,等课程结束后,却变得更加不知其所以然。

因此,改进教学方式,在授课过程中采用多种教学方法去激发学习的兴趣,可以帮助学生更好的理解知识,运用知识,以达到更好的教学效果。

2 各种教学法在教学中的具体应用

2.1形象法

形象法是指通过事物的直观标本、模型等来加深理解和掌握知识的一种学习方法。形象的东西容易引起人们的注意,诱发学习情感,激发学习的兴趣。而在数据结构中有许多的抽象概念,通过结合一些形象的实例进行讲解,可以有助于增加学生的感性认识和对知识的消化理解。

例如,在讲授栈“先进后出”的特点时,可以做这样的比方:栈就好比我们平时洗碗,洗好的碗一般都是放在其他已洗好的碗的上面;而在使用碗的时候,也是从最上面逐个取出。一叠碗就相当于一个栈,放碗的动作相当于进栈,取碗的动作相当于出栈。

还有对于一些算法问题,如果直接用算法语言来描述,学生总感到难以理解。因此在教授的过程中教师还可以借助图形的方式让学生更加形象直观地去理解问题。例如在讲线性表的基本操作时,就可以把日常生活中所熟悉的花名册看成线性表,由此引出问题“我们在使用花名册时通常有哪些操作”来引导学生讨论和分析。然后配合画图:首先画出一个空表(构造线性表),然后统计花名册上的人数(求线性表的长度),查找某人是否在名册中(线性表的查找),从花名册中获取某人的信息(取线性表中的元素),找名册中某人的前面是谁(求某一元素的前驱),找名册中某人的后面是谁(求某一元素的后继),在名册中加入一个人(线性表的插人),在名册中划掉一个人(线性表的删除)。实践证明,这样的讲授方法比纯粹的照本宣科可以取得更好的教学效果。

2.2归纳法

归纳是指从大量的事件中,总结和概括出一般原理;和归纳相反,演绎是指从一般到个别的推理。利用归纳和演绎这两种方法,可以帮助学生对所授内容的理解做到从点到面、从面到点的结合。

例如,在计算数组元素的地址时,可以先利用一个具体的一维数组,计算出数组中每个元素的存储地址;然后由教师归纳出在一维数组a[n]中,已知数组的起始地址为LOC(a[0]), 每个数组元素占d个存储单元,则数组中数组元素a[i]的地址为:LOC(a[i])= LOC(a[0])+i*d。接下来,进入二维数组的学习时,就可以试着由学生自己归纳二维数组元素的地址一般表达式。在二维数组a[m][n]中,已知数组的起始地址为LOC(a[0][0]), 每个数组元素占c个存储单元,按行存储,则数组中数组元素a[i][j]的地址:LOC(a[i][j])=LOC(a[0][0])+(i*n+j)*c。这也为后面章节中特殊矩阵存储时,元素地址的计算方法做了铺垫。通过这种演绎思维的培养,使学生对掌握知识能做到举一反三,融会贯通。

2.3对比法

类比思维是将两个或多个事物放在一起,从事物共有、相似或相同的属性中,找到事物的本质属性和特征。在教学过程中,通过采用基于类比思维的对比法教学,可以增强学生对课程内容联贯性的理解,提高学生的综合运用能力。数据结构中有些内容是非常类似的,所以在讲授时,教师可以进行对比归类,引导学生正确理解类似问题,从而起到举一反三的效果。

例如,在介绍栈和队列作为特殊的线性表时,首先联系日常生活中叠放碗来引入栈“先进后出”的操作特性,联系排队买东西来引入队列“先进先出”的操作特性,通过两者的对比来加强学生的理解和记忆。

例如,在讲栈的顺序存储结构实现方式时,可以先提出两种方式:方式一是将栈顶设置在线性表的首端;方式二是将栈顶设置在线性表的尾端。若采用方式一,当元素入栈时,必须先将栈中的所有元素下移一个位置,空出栈顶指针所指位置才能将元素入栈;而当元素出栈时,必须将栈中的所有元素上移一个位置。入栈和出栈算法的时间复杂度都为O(n)。若采用方式二,入栈时只须将栈顶指针下移一个位置,即可将元素入栈;出栈时,只须将栈顶指针上移一个位置即可。这时,入栈和出栈算法的时间复杂度皆为O(1)。由此对比分析,引出最佳方案是方式二。最后,再通过一些应用实例来加深对教学内容的理解,从而使学生掌握应用所学知识解决具体问题的步骤和方法。

再如介绍各种排序方法时,教师可以首先重点讲解其中的一种排序方法,包括其算法思想和程序实现,其余的排序算法则引导学生自己去思考、去实现。这种方式可以培养学生独立思考的良好习惯,让他们理清思路,发现各种算法之间的不同,最后在由教师做出评判与补充,从而达到事半功倍的效果。

2.4趣味法

兴趣是最好的老师。如何激发学生的学习兴趣,是教师在组织教学时需要重点考虑的问题。数据结构是一门理论性较强的课程,如果教师在授课时仅仅满足于只把知识点讲解清楚,而不注重教学的生动性,那么学生的学习将只能是一种被动行为。如何变被动学习为主动学习?其实教师在课堂中可以贯穿一些趣味题,适当地将问题趣味化,引入一些生活中熟悉的问题来激发学生的好奇心与求知欲。

例如,在介绍有序表的查找方法时,可以先和学生一起做一个“猜数字游戏”。首先任意选取一名学生来参加游戏,学生在心里想一个1000以内的整数,由老师来猜;当老师每说出一个数字时,学生要明确地回答心中所想的数是大于、小于还是等于老师所猜的数。通过几组游戏后,教师可以提问“最多几次可猜中学生所想的数”。这一问题的提出,将大大引起学生的好奇心。其实这个游戏的本质就是有序表的查找问题,可以采用二分查找法来解决,每次猜所定范围的中间数字即可,最多10次就可以找到所要猜的数字。由此可以让学生很形象地理解二分查找法的原理和优点。

同样在学习线性表的概念及应用时,可以利用“猴子选大王”的问题;讲解递归问题时,可以举例 “Hanoi塔问题”、“兔子生小兔子”(菲波那契数列)来帮助学生理解数组、递归及回溯;这些趣味问题的引入,大大激发了学生的学习兴趣,增强了他们学习的主动性。

3 结束语

任何形式的教学改革活动需要在具体的教学中落实,课堂教学水平的高低,将直接关系到学生的能力培养。经过几年的教学实践表明,根据《数据结构》课程的特点,在教学中合理地运用形象法、归纳法、对比法和趣味法等多种教学方法,能够激发学生的学习兴趣,帮助学生更好地理解数据结构中抽象的内容,提高了学生的算法设计水平和编程操作能力,教学质量大大提高。

[1]严蔚敏,吴伟民.数据结构(C语言版)[M].北京:清华大学出版社,1997

[2]谭浩强.C语言程序设计[M].北京:清华大学出版社,2000

[3] 周张兰.算法与数据结构理论教学技巧探讨[J].科教导刊(上旬刊).2013(11)

徐畅(1982.4—),女,汉族,湖南长沙人,湖南安全技术职业学院讲师,主要研究方向:程序设计和计算机技术。

Discussion on the Teaching of Data Structure

Xu Chang,Zuo Danxia
(Hunan Vocational Institute of Safety Technology,Hunan Changsha,410151)

Data Structure is a basic course for computer specialty.This paper presents some teaching methods and teaching experience from the angle of practice.The teaching quality are greatly improved.

data structure;teaching reform;teaching method

猜你喜欢
数组数据结构算法
JAVA稀疏矩阵算法
数据结构线上线下混合教学模式探讨
JAVA玩转数学之二维数组排序
为什么会有“数据结构”?
基于MapReduce的改进Eclat算法
Travellng thg World Full—time for Rree
进位加法的两种算法
Excel数组公式在林业多条件求和中的应用
一种改进的整周模糊度去相关算法
高职高专数据结构教学改革探讨