案例教学法在《数据结构》线性表教学中的应用

2017-12-27 03:37刘丽艳
现代计算机 2017年33期
关键词:单链结点数据结构

刘丽艳

(大连理工大学城市学院,大连 116600)

案例教学法在《数据结构》线性表教学中的应用

刘丽艳

(大连理工大学城市学院,大连 116600)

《数据结构》课程涉及概念多,内容抽象,学生难于理解。以线性表的教学为例,从引入案例、分析案例和总结案例三个方面进行阐述,分析并解决在线性表的教学过程中遇到的问题。激发学生的学习兴趣,取得较好的教学效果。

案例教学法;数据结构;线性表

0 引言

《数据结构》是计算机相关专业的一门重要专业基础课,它为计算机程序设计提供了重要的理论技术基础,而且该课程已成为其他理工专业的热门选修课。在该门课程的教学过程中,主要讲授各种数据类型的逻辑结构、存储结构及其相应操作的算法实现。要求学生学会分析研究计算机加工的数据结构的特性,以便为应用涉及的数据选择适当的逻辑结构、存储结构及其相应的算法,并初步掌握算法的时间分析和空间分析的技术[1]。由于该课程的教学内容广泛,概念多,而且逻辑性和抽象性都很强,使得学生在理解和学习上都比较困难,同时对于其他理工专业的学生内容更抽象,理解更困难,更容易产生厌学情绪。因此,需要教师在教学过程中不断改进和提高教学方法,引导学生积极主动地学习,不断激发学生的学习兴趣,从而达到提高教学质量的目的。本文以《数据结构》课程中线性表的教学为例,分析并阐述了案例教学法在线性表教学过程中的应用,提高了课堂教学的趣味性,收到了较好的教学效果。

1 案例教学法

案例教学法最早在19世纪末出现在美国,20世纪30年代由美国哈佛商学院倡导,广泛应用于商业教育中[2]。当时的案例教学法是一种很独特的教学方法,所选取的案例都是来自于商业管理的真实情境或事件,通过这种方式,能够引导和培养学生主动参与课堂讨论,教学效果很好。20世纪70年代后,案例教学法在普通教育领域开始受到重视并迅速普及。

所谓案例教学法,就是教师根据教学目的和教学内容的需要,运用典型案例,让学生积极思考、主动探索,以提高他们运用所学知识分析、解决问题能力的一种教学方法[3]。具体的实施过程可以分为三步:首先,教师把事先选择好的案例提供给学生,让学生带着案例所提出的问题去理解和运用教材中的理论知识,这样不仅提高了学生分析问题和解决问题的能力,而且激发了学生的学习热情。接着,教师针对精选的案例,提出相关问题,引导学生积极思考,让学生对案例进行自主探究、分析和讨论。具体的教学过程可以灵活多样,如:分组讨论、全班讨论等。在讨论过程中,针对学生在讨论中不容易解决的问题,教师要进行引导启发。在分析与讨论中,学生不仅理解和掌握了新知识,而且提高了解决问题的能力。讨论结束后,教师要对讨论的结果进行归纳总结,并及时客观地评价学生在讨论过程中的优缺点,针对案例的疑难问题进行深入的剖析和总结。最后教师和学生一起总结出解决案例问题的最佳方案,使得学生学会从不同角度来探究和解决案例问题,并能够有效地运用所学的知识来解决实际问题。

2 案例教学法在线性表教学中的应用

线性结构是树形结构和图形结构的基础,其教学效果直接影响学生对后续内容的学习兴趣。在线性表的教学过程中,涉及的主要内容包括线性表的逻辑结构、存储结构以及不同存储结构下基本操作的算法实现,其中,线性表的存储结构和基本操作的算法实现是教学的重点和难点。本文针对线性表的存储结构:顺序表和单链表,采用了不同的典型案例,详细分析了顺序表和单链表的类型定义,重点讨论了插入算法在顺序表和的单链表中的不同实现,最后总结了顺序表和单链表的区别。

2.1 顺序表

顺序表是线性表的一种顺序存储结构。在顺序表中,线性表的结点按逻辑顺序依次存放在一组地址连续的存储单元里。顺序表的特点是线性表中结点的逻辑顺序与存储顺序一致。

(1)引入案例

设计一个班级通讯录,其中包括班级每名学生的学号、姓名、电话、QQ号、家长联系方式等。要求实现如下功能:插入一条新纪录;删除一条纪录;查询通讯录中的信息。

(2)分析案例

首先,需要给出该案例中涉及的类型定义,类型定义是后面算法实现的基础。

每名学生的信息使用结构体类型表示,具体定义如下:

班级通讯录使用结构体数组表示,同时需要设计一个变量表示班级实际的人数,班级通讯录的类型定义如下:

接着引出教材[1]中顺序表的类型定义:

在上面顺序表的类型定义中,定义了一个指针变量elem指向一个数组,即线性表中的元素也是存储在数组中。与上面班级通讯录的类型定义的区别是,班级通讯录类型定义的数组的空间是固定的,而顺序表的类型定义中的数组空间是可以扩展的,更加灵活,更具有普遍性。

然后,给出在线性表中插入一条记录的算法实现。插入一条记录是指在线性表的第i个数据元素之前插入一个新元素,就是要使长度为n的线性表变成长度为n+1的线性表。图1表示了一个线性表在进行插入一条记录的前后位置变化。

图1 线性表插入前后的状况

通过图1可以看出,在第i个元素之前插入一个新元素,需要将第i到第n个元素整体向后移动一个位置,即共移动了n-i+1次。这个移动元素的过程是个重复的过程,需要使用循环结构实现。实现的代码如下:

(3)总结案例

通过上面定义的结构体数组很容易理解线性表的顺序存储结构。由于删除操作和插入操作过程相反,所以,在详细分析插入算法的基础上,也能够很容易理解顺序表的删除操作。同时,由于学生在C语言程序设计课程中学习过顺序查找算法,所以对于顺序表的查找操作也能够很容易理解。

2.2 单链表

链表是线性表的链式存储结构。在链表中,线性表的数据元素存储在一组任意的存储单元中,这些存储单元可以连续,也可以不连续,并且借助指示元素存储位置的指针表示数据元素间的逻辑关系。每个结点除数据域外只包含一个指针域的链表称为线性链表或单链表。

(1)引入案例

设计和实现某班C语言课程成绩管理的完整程序。学生数据包含学生的学号、姓名和成绩,要求完成如下功能:创建成绩链表;插入一个学生的数据;删除一个学生的数据;按学号和姓名查找某个学生;按从高到低的顺序排列学生成绩。

(2)分析案例

此处的设计思想基本与顺序表相同,只是对保存学生成绩的线性表采用单链表存储结构实现。本案例中用到的学生数据也是程序运行时由用户从键盘输入,保存到一个单链表中。

学生结构体类型的定义与顺序表应用举例处的类型定义类似,用C语言描述如下:

最后,为了与顺序表对比,给出在单链表中插入一个结点的算法实现。在p所指向的结点后插入一个新结点,需要修改p所指向的结点的指针域,具体的操作如图2所示:

图2 单链表中插入结点前后指针变化状况

通过图2可以看出,在插入一个新结点x后,结点x的指针域指向了结点b,结点a的指针域指向了结点x。具体实现的代码如下:

(3)总结案例

由于单链表的删除操作和插入操作过程相反,所以,在详细分析插入算法的基础上,能够很容易理解单链表的删除操作。而创建单链表的过程实质就是插入操作的重复过程,单链表的查找操作过程与顺序表的查找操作过程类似,能够很容易理解。通过比较顺序表与单链表的插入算法,很容易理解并总结出两种不同存储结构的区别,即单链表的插入操作比顺序表的插入操作更加灵活方便,不需要移动元素。

3 结语

实践表明,通过在线性表的教学中实施案例教学法,能够充分激发学生学习的热情,使得学生对于抽象内容更加容易理解和掌握,同时也能提高学生分析问题和解决问题的能力。数据结构是计算机学科一门非常重要的专业基础课,教学难度大,在教学过程中合理有效地使用案例教学法,能够取得较好的教学效果。

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

[2]杨玫,李瑛,李祁.案例导入教学法在数据结构教学中的应用[J].电脑知识与技术:学术交流,2011,07(11X):8272-8273.

[3]许慧,陈兴.数据结构的案例教学——栈在“迷宫问题”中的应用[J].科技信息,2011(26):88-89.

Application of Case Teaching Method in the Linear Table Teaching of Data Structure

LIU Li-yan
(City Institute,Dalian University of Technology,Dalian 116600)

In Data Structure course,there exist many abstract concepts and content,so it is difficult to understand the course for students.For exam⁃ple,in the teaching of the linear table,elaborates the introduction of case,the analysis of case and the summary of case,respectively,and analyzes and solves the problems in the teaching process of the linear table.Thus,arouses the students'interest in learning,and obtains good teaching effect.

Case Teaching Method;Data Structure;Linear Table

1007-1423(2017)33-0041-04

10.3969/j.issn.1007-1423.2017.33.010

刘丽艳(1981-),女,内蒙古赤峰人,硕士研究生,副教授,研究方向为数据挖掘、算法分析与设计

2017-11-09

2017-11-20

猜你喜欢
单链结点数据结构
LEACH 算法应用于矿井无线通信的路由算法研究
基于八数码问题的搜索算法的研究
数据结构线上线下混合教学模式探讨
考虑微观变形特征的水凝胶均匀和非均匀溶胀分析及其影响参数研究1)
基于保证服务模型的集群式供应链优化配置
重典型应用,明结构关系
发现真菌多组分环状单链DNA病毒(2020.4.7 中国农业科学院)
为什么会有“数据结构”?
运用DNA计算解决最短路径问题
高效学习数据结构