论文部分内容阅读
【摘 要】 数据结构是信息管理与计算机等相关专业重要的核心课程,为取得良好的教学效果,本文设计了数据结构课程的算法与内容体系,分析了教学难点及有效的讲授方法,对提高数据结构课程的教学质量具有重要的借鉴意义。
【关键词】 数据结构;课程教学;教学方法
【中图分类号】 G643.2 【文献标识码】 A 【文章编号】 2095-3089(2017)17-000-02
1.引言
1.1数据结构课程的发展趋势
1968年开始将数据结构课程作为信息管理与计算机专业的核心课程,经历了多次的内容调整与教学改革。第一阶段(1968-1995)以结构化的算法教学为主;第二阶段(1996-2009左右)基于网络环境下的数据结构算法软件系统与多媒体教学课件;第三阶段(2010-现在)基于大数据环境下的结构化与非结构化数据结构算法与网络教学。随着信息化的发展,迫切要求学生对数据结构算法细节的深入掌握,并根据算法逻辑步骤快速编写程序。
1.2数据结构课程在信息管理类专业所处的位置
数据结构是信息管理类专业(计算机应用、信息科学、信息管理等相关专业)的专业基础课。其前趋课程包括:数学、计算机组成原理、离散数学、图论、算法语言、高级语言程序设计、网络技术、数据库原理等;后继课程包括:编译原理、操作系统、数据仓库与数据挖掘、网络技术与应用、决策支持系统等。因此,数据结构是信息管理类专业一门承上启下的重要课程,为取得良好的教学效果,应注重理论概念与对应算法的统一、算法思想与上机编程的统一。换句话说,为学生讲授一种如何学好数据结构的新方法,即让学生了解如何将客观世界问题在计算机外部的表示方式(即逻辑表示方法),客观世界问题在计算机内部的存储方式(物理存储方式),以及如何对该问题进行计算的方法,是学好这门课的关键。
2.数据结构课程的重点与内容体系
2.1数据结构课程的教学重点
数据结构课程的教学重点主要包括:(1)抽象数据类型定义与形式化表示,对应算法的描述、在计算机外部的逻辑表示及其对应的计算机内部的物理表示;(2)抽象数据类型对应实际问题的解决方案;(3)线性表、非线性表、数组、栈与队列、树型、图形等数据结构及其运算;(4)经典算法的逻辑,如:Hanoi塔的递归、树的递归、图的递归;(5)嵌套算法;(6)查找和特殊查找方法;(7)排序的各类方法。
2.2数据结构课程的内容结构
根据数据结构教学内容特点将算法分为线性、非线性数据结构及其对应算法(如图1)。
3.数据结构课程的难点及讲授方法
从图1可知,数据结构课程的知识体系包含大量的解决客观世界实际问题的数学建模方法即算法,如何快速掌握大量的数据结构算法,并快速编写程序。
3.1掌握数据结构的学习要领
(1)梳理数据结构课程的算法与内容体系。了解知识点的概念、术语、客观世界问题的数学模型,确定当前问题属于树、图、表、字符等哪种数据结构形式。之后,按照所选择的数据结构的ADT(抽象数据类型)进行定义和运算;然后,选择适合的算法,注意算法的时间复杂度和空间复杂度;除此,熟练掌握一门高级程序语言的设计方法及程序实现。
(2)掌握数据结构算法的核心技巧。以讲授“线性表的插入与删除算法”为例,主要包括两部分内容:①找到插入(或删除)点后,进行插入(或删除)操作;②插入操作则需要将插入点到表尾所有元素进行移动。如在第i个数据元素之前进行插入操作,则将表中第i个数据元素到第n个数据元素(表长为n)一起进行移动到第i+1到第n+1数据元素对应的存储位置中。因此,移动元素的算法成为插入或删除算法的核心,解决方式是将复杂算法进行分段分解。一般的划分方法是:1)程序(算法)的初始条件部分;2)程序(算法)的主体部分,重点的内容是程序(算法)的核心语句部分;3)程序的结果处理部分。
3.2数据结构难点的掌握方法
数据结构课程算法的难点主要包括:顺序线性表的插入和删除算法的主体功能—窜动数据元素和插入删除操作;栈与队列的特殊操作规律及应用;栈与递归过程,广义表、树、图等算法都属于递归问题;串的压缩与非紧凑存储的特点等。
(1)学习递归程序(过程)的技巧。含有递归过程的算法有:Hanoi塔,迷宫问题,N!计算,Fibonacci数,Ackman函数,广义表、树和图的递归算法等。如果掌握不好将影响数据结构课程的整个进度。由于递归的运行离不开栈,因此,在阅读递归过程中,需要巧妙地将算法的运行与栈的参数保存及传递结合起来。通过经典的Hanoi塔递归程序(算法)的详细讲解,解剖这样一个具有代表性的递归过程的复杂运行过程,使学生在本课程后续章节的递归算法(如:广义表、树、图等递归算法)的学习中起到举一反三效果。
(2)掌握关于图的复杂算法。首先要清楚图的特征即引起图复杂的原因—图中的顶点是任意的。首先要在图中确定第一个访问的顶点;对无向图需要在程序中规定其当前访问顶点、其第一个邻接点和下一个邻接点;然后,根据图中顶点之间的任意关系,在访问时需设定一个Visited(v)的访问标志来确定当前的访问状态,之后才能进行图的深度优先搜索等操作。
(3)将逻辑流程图和图示法相结合掌握和理顺算法。首先展出程序(算法)的主体语句;然后从这些主体语句中找出其核心语句。以顺序线性表插入算法为例,先找出插入语句;再继续理解实现该操作的基本条件和初始条件,定位到窜动和插入之前的语句;然后,再擴展到算法(程序)的其他几个重要的核心语句。将上述操作采用流程图和图示法相结合的方式来解释(图2)。
(4)对重点算法、经典算法应采用理论与实际相结合的教学模式。受到课时的限制,要选择重要知识点进行上机实践,主要包括:栈的应用、特性与规律;模式串匹配的改进算法即KMP算法;建立Huffman树及编码;最优二叉树的存储理论及编码;拓扑排序算法的存储结构及实际应用;经典的排序和查找方法等。
4.小结
数据结构课程教学应始终围绕“数据结构课程的算法与内容体系”展开(如图1)。通过数据结构的概念算法与应用,找出代表性算法的共性规律,从数据的概念、术语、数据结构类型、对应的算法及应用等各个环节进行讲授。采用流程图和图示法相结合的方法模拟计算机执行程序是学习数据结构课程的高效方式。
参考文献:
[1]严蔚敏,吴伟民著.数据结构(C语言版).清华大学出版社,2012.12.
[2]陈燕,曹妍,贾红雨,李晔.数据结构(C语言版).科学出版社,2016.8.
[3]殷人昆.数据结构(C语言版)(第2版).清华大学出版社,2017.4.
【关键词】 数据结构;课程教学;教学方法
【中图分类号】 G643.2 【文献标识码】 A 【文章编号】 2095-3089(2017)17-000-02
1.引言
1.1数据结构课程的发展趋势
1968年开始将数据结构课程作为信息管理与计算机专业的核心课程,经历了多次的内容调整与教学改革。第一阶段(1968-1995)以结构化的算法教学为主;第二阶段(1996-2009左右)基于网络环境下的数据结构算法软件系统与多媒体教学课件;第三阶段(2010-现在)基于大数据环境下的结构化与非结构化数据结构算法与网络教学。随着信息化的发展,迫切要求学生对数据结构算法细节的深入掌握,并根据算法逻辑步骤快速编写程序。
1.2数据结构课程在信息管理类专业所处的位置
数据结构是信息管理类专业(计算机应用、信息科学、信息管理等相关专业)的专业基础课。其前趋课程包括:数学、计算机组成原理、离散数学、图论、算法语言、高级语言程序设计、网络技术、数据库原理等;后继课程包括:编译原理、操作系统、数据仓库与数据挖掘、网络技术与应用、决策支持系统等。因此,数据结构是信息管理类专业一门承上启下的重要课程,为取得良好的教学效果,应注重理论概念与对应算法的统一、算法思想与上机编程的统一。换句话说,为学生讲授一种如何学好数据结构的新方法,即让学生了解如何将客观世界问题在计算机外部的表示方式(即逻辑表示方法),客观世界问题在计算机内部的存储方式(物理存储方式),以及如何对该问题进行计算的方法,是学好这门课的关键。
2.数据结构课程的重点与内容体系
2.1数据结构课程的教学重点
数据结构课程的教学重点主要包括:(1)抽象数据类型定义与形式化表示,对应算法的描述、在计算机外部的逻辑表示及其对应的计算机内部的物理表示;(2)抽象数据类型对应实际问题的解决方案;(3)线性表、非线性表、数组、栈与队列、树型、图形等数据结构及其运算;(4)经典算法的逻辑,如:Hanoi塔的递归、树的递归、图的递归;(5)嵌套算法;(6)查找和特殊查找方法;(7)排序的各类方法。
2.2数据结构课程的内容结构
根据数据结构教学内容特点将算法分为线性、非线性数据结构及其对应算法(如图1)。
3.数据结构课程的难点及讲授方法
从图1可知,数据结构课程的知识体系包含大量的解决客观世界实际问题的数学建模方法即算法,如何快速掌握大量的数据结构算法,并快速编写程序。
3.1掌握数据结构的学习要领
(1)梳理数据结构课程的算法与内容体系。了解知识点的概念、术语、客观世界问题的数学模型,确定当前问题属于树、图、表、字符等哪种数据结构形式。之后,按照所选择的数据结构的ADT(抽象数据类型)进行定义和运算;然后,选择适合的算法,注意算法的时间复杂度和空间复杂度;除此,熟练掌握一门高级程序语言的设计方法及程序实现。
(2)掌握数据结构算法的核心技巧。以讲授“线性表的插入与删除算法”为例,主要包括两部分内容:①找到插入(或删除)点后,进行插入(或删除)操作;②插入操作则需要将插入点到表尾所有元素进行移动。如在第i个数据元素之前进行插入操作,则将表中第i个数据元素到第n个数据元素(表长为n)一起进行移动到第i+1到第n+1数据元素对应的存储位置中。因此,移动元素的算法成为插入或删除算法的核心,解决方式是将复杂算法进行分段分解。一般的划分方法是:1)程序(算法)的初始条件部分;2)程序(算法)的主体部分,重点的内容是程序(算法)的核心语句部分;3)程序的结果处理部分。
3.2数据结构难点的掌握方法
数据结构课程算法的难点主要包括:顺序线性表的插入和删除算法的主体功能—窜动数据元素和插入删除操作;栈与队列的特殊操作规律及应用;栈与递归过程,广义表、树、图等算法都属于递归问题;串的压缩与非紧凑存储的特点等。
(1)学习递归程序(过程)的技巧。含有递归过程的算法有:Hanoi塔,迷宫问题,N!计算,Fibonacci数,Ackman函数,广义表、树和图的递归算法等。如果掌握不好将影响数据结构课程的整个进度。由于递归的运行离不开栈,因此,在阅读递归过程中,需要巧妙地将算法的运行与栈的参数保存及传递结合起来。通过经典的Hanoi塔递归程序(算法)的详细讲解,解剖这样一个具有代表性的递归过程的复杂运行过程,使学生在本课程后续章节的递归算法(如:广义表、树、图等递归算法)的学习中起到举一反三效果。
(2)掌握关于图的复杂算法。首先要清楚图的特征即引起图复杂的原因—图中的顶点是任意的。首先要在图中确定第一个访问的顶点;对无向图需要在程序中规定其当前访问顶点、其第一个邻接点和下一个邻接点;然后,根据图中顶点之间的任意关系,在访问时需设定一个Visited(v)的访问标志来确定当前的访问状态,之后才能进行图的深度优先搜索等操作。
(3)将逻辑流程图和图示法相结合掌握和理顺算法。首先展出程序(算法)的主体语句;然后从这些主体语句中找出其核心语句。以顺序线性表插入算法为例,先找出插入语句;再继续理解实现该操作的基本条件和初始条件,定位到窜动和插入之前的语句;然后,再擴展到算法(程序)的其他几个重要的核心语句。将上述操作采用流程图和图示法相结合的方式来解释(图2)。
(4)对重点算法、经典算法应采用理论与实际相结合的教学模式。受到课时的限制,要选择重要知识点进行上机实践,主要包括:栈的应用、特性与规律;模式串匹配的改进算法即KMP算法;建立Huffman树及编码;最优二叉树的存储理论及编码;拓扑排序算法的存储结构及实际应用;经典的排序和查找方法等。
4.小结
数据结构课程教学应始终围绕“数据结构课程的算法与内容体系”展开(如图1)。通过数据结构的概念算法与应用,找出代表性算法的共性规律,从数据的概念、术语、数据结构类型、对应的算法及应用等各个环节进行讲授。采用流程图和图示法相结合的方法模拟计算机执行程序是学习数据结构课程的高效方式。
参考文献:
[1]严蔚敏,吴伟民著.数据结构(C语言版).清华大学出版社,2012.12.
[2]陈燕,曹妍,贾红雨,李晔.数据结构(C语言版).科学出版社,2016.8.
[3]殷人昆.数据结构(C语言版)(第2版).清华大学出版社,2017.4.