论“数据结构”与“C程序设计”课程间的关系

2017-05-30 08:46史志才施一萍张辉
高教学刊 2017年1期
关键词:C程序设计数据结构计算机教学

史志才 施一萍 张辉

摘 要:作为计算机及相关专业的核心课程之一,“数据结构”的教学一直得到了广大教师的高度关注和重视。文章分析了“数据结构”与其先修课程“C程序设计”间的关系,指出“C程序设计”对“数据结构”课程的教学效果具有重要影响,从专业的课程体系结构出发,认真梳理了两门课程的知识体系,建议应合理组织和优化“C程序设计”课程的教学内容,加强实验教学环节,为“数据结构”等后续课程的顺利开设奠定基础。

关键词:数据结构;C程序设计;计算机教学

中图分类号:G642 文献标志码:A 文章编号:2096-000X(2017)01-0060-02

Abstract: As one of the core courses of computer science and its related specialties, the teaching of "Data Structure" has always been attracting wide attention from teachers. The paper analyzes the relationship between this course and its prerequisite course "C Programming." It is pointed out that "C Programming" has an important influence on the teaching effect of "Data Structure." The knowledge architecture of these two courses is optimized according to the course architecture of the specialty. It is suggested to reasonably arrange the teaching content of "C Programming" and to enhance the experiment teaching, hoping to lay a good foundation for "Data Structure" and other subsequent courses.

Keywords: data structure; C Programming; computer teaching

一、概述

“數据结构”是计算机科学与技术、软件工程、网络工程等相关专业的一门专业基础课,也是这些专业课程体系中的核心课程以及四门考研课程之一。在计算机科学与技术专业的课程体系中,“数据结构”课程具有承上启下的重要作用,其教学内容不但巩固了已修的“C程序设计”、“离散数学”、“计算机导论”等课程所学知识,还为“数据库系统原理”、“操作系统”、“编译原理”等后续课程的开设以及相关实验教学环节的顺利完成奠定基础。教学实践经验表明,“数据结构”课程的教学效果与其先修课程的学习情况密切相关,尤其是“C程序设计”课程;“C程序设计”课程学习效果的好坏对“数据结构”等后续课程的教学会产生严重影响,因此对于“C程序设计”课程的教学应给予足够的重视和高度关注。

二、“数据结构”与“C程序设计”

(一)“数据结构”的教学内容及教学目的

作为计算机专业的核心课,“数据结构”课程主要介绍用计算机解决一系列问题,特别是非数值计算类问题所用的各种数据组织方法、存储结构,以及在各种结构上执行的插入、删除、查找等操作。主要教学内容包括:数据结构和算法设计与分析的基本知识,线性表、堆栈、队列、二叉树、树、图等各种基本数据结构的定义、存储结构,排序、查找等各种常用的非数值算法以及应用。

“数据结构”的教学目的是通过课程的学习,使学生熟练地掌握数据结构的内在逻辑关系及其在计算机中的表示方法(即存储结构),以及有关基本操作的算法实现;熟悉它们在计算机科学中的基本应用。通过这门课程的学习,培养和训练学生密切结合实际应用,在软件开发过程中能够根据求解的问题合理选择数据结构、应用高级语言编写有效算法的能力,并为学习《操作系统》、《编译原理》、《数据库系统原理》等后续课程和开发各种软件奠定基础[1]。

(二)“C程序设计”的教学内容及教学目的

“C程序设计”主要讲授C语言中的数据类型、运算符、语句结构及其程序设计的基本方法,使学生掌握程序设计的基本概念、程序设计语言的成份和程序的组成,掌握结构化程序设计的基本思想和基本方法,最终目标是培养学生的程序设计能力,进而学会利用C语言解决一般应用问题,并为《数据结构》、《操作系统》等后续课程的顺利开设奠定基础。

(三)“数据结构”与“C程序设计”的特点及教学过程中存在的问题

与“数据结构”课程一样,“C程序设计”作为计算机相关专业的一门专业基础课,是计算机学科的核心课程,是学生学习程序设计的开端,是培养学生分析问题和解决问题的能力以及程序设计能力的主要课程,学生计算思维的形成也与“C程序设计”课程有着密切关系。C语言有着其它高级程序设计语言不可比拟的优点,该语言直观,结构性和灵活性好,但其中的指针、结构体和动态链表等概念难以掌握;而这些内容却是“数据结构”、“操作系统”等后续课程中要用到的主要知识。

作为“C程序设计”的后续课程,“数据结构”采用C语言来描述数据的逻辑结构和物理结构及其插入、删除、查找、排序等操作和对应的算法;通过该课程的学习,进一步提高学生的数据描述能力和程序设计能力。“数据结构”课程的教学内容抽象,逻辑性强,相应的实验环节要求较高,编程工作量大,许多概念需要通过上机编写程序进行深入理解和巩固,这些特点决定了该门课程无论是教,还是学,都具有较大的难度。在常规的教学过程中,“C程序设计”和“数据结构”这两门课程是相对独立、分开授课的,如果协调不好很容易导致两门课的教学内容脱节,进而影响后续课程的教学效果。在实际教学过程中,“C程序设计”课程往往只注重C语言的语法体系、基本程序结构和控制语句。目前许多高校将“C程序設计”的授课学时压缩到48课时(甚至32学时),其中还包括实验上机环节,教学过程中往往没有足够的学时讲授指针、结构体和动态链表等教学内容。学生的学习精力大多集中在基本概念及简单程序的编写上面,对数组、函数、指针、结构体和链表的学习深度不够,这使得学生只能简单地应用C语言而不能用于解决像动态存储分配这样的复杂问题。而“数据结构”课程的学习必须以数组、指针、结构体、动态链表等知识为基础,要面对的是树的存储和遍历、图的存储、最小生成树、最短路径、拓扑排序、堆、基数排序等一些复杂算法,C语言学习环节的薄弱给“数据结构”课程的开设造成了很大困难[2]。

为此,应该从专业的课程体系结构出发,将“数据结构”和“C程序设计”这两门课程有机地结合起来,认真梳理两门课程间的关系,构建C语言与数据结构的课程新体系,合理组织“C程序设计”课程的教学内容,为“数据结构”课程的顺利开设奠定基础。

三、“数据结构”与“C程序设计”课程模块间的对应关系

“数据结构”课程通常包括线性表、堆栈、队列、二叉树、树、图、查找和排序等模块,每个模块涉及到“C程序设计”课程的不同内容。每种数据结构均包括顺序存储和链式存储等两种物理结构。顺序表通常采用数组类型进行存储,而链式存储则采用动态链表。“C程序设计”课程包括基本语法、程序结构、控制语句、函数、数组、指针、结构体、文件等模块。下面认真梳理一下“数据结构”与“C程序设计”两门课程各知识模块间的关系,从中指出为了保证“数据结构”课程的顺利开设,“C程序设计”课程所应该讲授的基本教学内容[3,4]。

线性表是由相同类型的数据元素(结点)组成的有限序列。数据元素可以是一个字符、一个数或一个记录,也可以是更复杂的信息。组成线性表的各个数据元素形成了一对一的关系,即线性关系。两个典型的线性表是堆栈和队列,它们的顺序存储使用了数组类型,每个数组元素可能是一个结构体类型;而链式存储采用了动态链表,其中涉及指针、结构体等类型。队列和堆栈的操作涉及循环、选择等C语句。

树是一种非线性的层次结构,用于描述一对多的关系;而二叉树是一种特殊的树,其每个结点最多有两个子结点;树和二叉树间可以相互转换。树在计算机中常采用双亲表示法、孩子链表表示法、孩子兄弟表示法等进行表示和存储,其中可以采用数组进行顺序存储,也可以采用链表进行動态存储,具体涉及到数组、指针、结构体等数据类型。二叉树常采用链表进行存储,但满二叉树和完全二叉树因各个结点编号间存在特殊关系,也可以采用数组进行顺序存储。树和二叉树的建立、删除、遍历等操作涉及循环、选择等C语句。

和树一样,图也是一种非线性的数据结构,但比树形结构更复杂。在图状结构中,任意两个结点之间都可能相关,即结点之间的邻接关系可以是任意的。图在计算机中采用邻接矩阵和邻接表来存储,其中邻接矩阵采用二维数组来表示各个结点间的邻接关系;而邻接表包括两部分:结点表和边表。结点表采用一维数组表示各个结点的信息,每个数组元素为一个结构体类型,其中包括指向边表的指针;边表为一个动态链表,存储与结点表中的结点有边的各个结点。显然,这里涉及数组、指针、结构体、动态链表等概念,其操作包括图的遍历、拓扑排序、寻找最小生成树、最短路径等,涉及大部分C语言知识。

排序和查找是在上述数据结构的基础上,对数据进行排序和查找操作。当处理的数据规模较大时(如大数据的处理),还需要涉及文件等操作。冒泡排序和选择排序方法在“C程序设计”中常被作为编程实例进行介绍,而快速排序、堆排序、基数排序等方法需要数组、指针等更多的C语言知识。

四、结束语

“数据结构”作为计算机科学与技术及其相关专业的一门核心课程,在专业课程体系中起到承上启下的重要作用,也是培养学生计算思维和程序设计能力的一门重要课程。为了确保“数据结构”课程的教学质量和学习效果,应加强“C程序设计”等先修课程的教学;特别是“C程序设计”中的数组、指针、结构体、动态链表等内容对于“数据结构”课程的教学和学习非常重要;若学生没有很好地掌握这些学习内容,就很难理解“数据结构”中堆栈、队列、树、二叉树和图等在计算机中的存储表示形式,很难完成其中的实验上机环节,进而影响“操作系统”、“编译原理”等后续课程的学习。所以建议“C程序设计”课程在讲授了基本语法和3种基本程序结构后,应把教学重点放在数组、指针、结构体、动态链表等教学内容上,特别是动态链表中结点数据类型的定义以及链表的创建、删除、查找等操作;只有学生掌握了上述知识,才能够学好“数据结构”,并为“操作系统”、“编译原理”等后续课程的学习奠定基础。

参考文献

[1]蒋秀英.《数据结构》与《程序设计》的融合教学模式研究[J].山东师范大学学报(自然科学版),2008,3:130-131.

[2]陈红琳.信管專业中“C语言”与“数据结构”课程的整合研究[J].电脑学习,2010,6:90-92.

[3]徐春雨.高职院校C语言与数据结构课程整合的探索与实践[J].福建电脑,2010,10:201-202.

[4]吴清江,缑锦,叶双,等.以数据结构为核心的计算机学科专业课程群建设方法[J].湖州师范学院学报,2009,1:128-131.

猜你喜欢
C程序设计数据结构计算机教学
网络环境下中职计算机教学的探析
中学计算机信息技术课程教学存在问题和对策
开展研究性学习深化中职计算机教学改革探究
计算机教学中存在的问题与对策研究
“翻转课堂”教学模式的探讨——以《数据结构》课程教学为例
C程序设计趣味教学初探
C程序设计课堂趣味性教学初探
接轨全国等级考试,探讨高校C语言课程教学改革
高职高专数据结构教学改革探讨
论中职生C程序设计学习兴趣的培养