“数据结构”课程教学大纲与教学规程范文
数据结构课程教学大纲

数据结构课程教学大纲第一篇:数据结构课程教学大纲数据结构课程教学大纲一、课程基本概况课程名称:数据结构课程名称(英文): Data Structures课程编号:B09042课程总学时:60(其中,讲课48,实验12)课程学分:3课程分类:专业选修课开设学期:4适用专业:计算机网络工程本科先修课程:集合论,图论,高级语言(结构或记录,指针)后续课程:数据库,编译原理,操作系统等二、课程的性质、目的和任务数据结构是计算机专业的一门核心专业课程,是软件课程中非常重要的一门课程,在整个专业教学中占有十分重要的地位,是一门理论性非常强的课程。
通过课堂教学、课外练习和上机实习,使学生了解数据对象的特性,数据组织的基本方法,并初步具备分析和解决现实世界问题在计算机中如何表示和处理的能力以及培养良好的程序设计技能,为后续课程的学习和科研工作的参与打下良好的基础。
三、主要内容、重点及深度本门课程共60学时,其中理论教学48学时,实验教学12学时。
其中,理论教学部分:第一章绪论(一)目的要求了解数据结构的意义与发展过程、数据结构在计算机科学中的作用、学习本课程的目的、任务及要求。
理解数据结构的基本概念;算法设计;掌握算法的时间和空间复杂度。
(二)教学内容本章知识点:1.相关的基本概念(掌握);2.算法五大要素 (掌握);3.计算语句频度和估算算法时间复杂度的方法(掌握)。
(三)重点与难点重点:数据结构的定义;算法的描述方法。
难点:数据结构的定义;算法与程序的区别;时间复杂度及其计算。
第二章线性表(一)目的要求掌握线性表的逻辑结构;线性表的存储结构及操作的实现;理解一元多项式的表示;(二)教学内容本章知识点:1.线性表的逻辑结构(掌握);2.线性表的存储结构(掌握);3.线性表在顺序结构和链式结构上实现基本操作的方法(掌握);4.从时间和空间复杂度的角度比较线性表两种存储结构的不同特点及其适用场合(掌握)。
(三)重点与难点重点:线性表的概念;线性表的顺序存储结构、链式存储结构及其常用算法。
数据结构-教学大纲

《数据结构》教学大纲一、基本信息二、教学目标及任务本课程作为计算机专业重要的主干课程,它要求学生学会分析和研究需解决的问题中的数据的特性,为其选择合适的数据结构来描述,在此数据结构的基础上写出相应的算法,并初步掌握算法的时间复杂度和空间复杂度的分析技术。
三、学时分配教学课时分配四、教学内容及教学要求第一章数据结构绪论(共4学时)基本内容:1)数据结构的概念2)数据的逻辑结构和存储结构3)算法教学要求:熟悉数据结构中各名词、术语的含义,掌握其基本概念;理解数据类型和抽象数据类型的含义;理解算法五个要素的确切含义,注意算法与程序的区别;掌握计算语句频度和估算算法时间复杂度的方法。
第二章线性表(共6学时)基本内容:1)线性表的概念及运算2)线性表的顺序存储结构—顺序表3)线性表的链式存储结构—链表教学要求:了解线性表的逻辑结构特性是数据元素之间存在着线性关系,在计算机中表示这种关系的两类不同的存储结构是顺序存储结构和链式存储结构;熟练掌握这两类存储结构的描述方法,以及线性表的各种基本操作的实现;能够从时间和空间复杂度的角度综合比较线性表两种存储结构的不同特点及其适用场合;掌握用线性表来表示一元多项式的方法及相应操作的实现。
第三章栈和队列(共4学时)基本内容:1)栈2)队列教学要求:掌握栈和队列类型的特点,并能在相应的应用问题中正确选用它们;熟练掌握栈类型的两种实现方法,特别应注意栈满和栈空的条件以及它们的描述方法;熟练掌握循环队列和链队列的基本操作实现算法,特别注意队满和队空的描述方法;理解递归算法执行过程中栈的状态变化过程。
第四章数组和矩阵(共4学时)基本内容:1)数组2)特殊矩阵教学要求:了解数组的两种存储表示方法,并掌握数组在以行为主的存储结构中的地址计算方法;掌握对特殊矩阵进行压缩存储时的下标变换公式;了解稀疏矩阵的三类压缩存储方法的特点和适用范围,领会以三元组表示稀疏矩阵时进行矩阵运算采用的处理方法;了解广义表的结构特点及其存储表示方法。
《数据结构》实验教学大纲

《数据结构》实验教学大纲
1、实验背景:
数据结构是计算机科学的基本理论,也是计算机程序设计必备知识,
是计算机应用和算法分析的基础。
实验教学是对学生知识的指导,是计算
机程序设计实践的重要组成部分。
它是学生掌握程序设计理论知识,发展
良好的分析思维能力,培养解决问题的能力的重要途径。
本实验教学大纲
是以C语言为编程语言,以实验室的应用为主要训练,以有关数据结构课
程实验内容为主要内容,主要包括数组、线性表、栈与队列、字符串、树、图等知识,以及基于C语言的实践性实验项目,旨在让学生更深入地了解
数据结构,进而加深对电脑程序设计的理解,从而掌握计算机软件设计开
发的知识、技能和能力。
2、实验任务:
1)在学习原理部分,学习基本的数据结构知识,掌握数组、线性表、栈与队列、字符串、树、图等基本数据结构,了解数据结构的存储结构及
其基本操作;
2)在实践部分,基于C语言,让学生掌握实验的设计思路,学习程
序的设计和编码,在解决实际问题中加深对基本数据结构基础理论的理解。
《数据结构》教学大纲

《数据结构》教学大纲一、课程简介《数据结构》是计算机科学与技术相关专业的基础课程之一。
本课程旨在通过理论与实践相结合的方式,培养学生具备良好的数据结构基础、灵活运用和设计数据结构的能力,并通过算法分析、问题求解等方式培养学生的编程思维和创新能力。
二、教学目标1. 理解数据结构的基本概念和原理,包括栈、队列、链表、树、图等基本数据结构的应用场景与实现。
2. 掌握数据结构的基本算法与操作,包括插入、删除、查找、排序等常用操作的实现与分析。
3. 培养学生良好的编程实践能力,能够灵活运用不同的数据结构解决实际问题。
4. 培养学生团队合作精神和沟通能力,能够与他人合作设计和实现复杂的数据结构与算法。
三、教学内容1. 数据结构基础1.1 数据结构与算法的关系1.2 抽象数据类型与数据结构1.3 算法复杂度与评估方法2. 线性结构2.1 线性表的基本概念与实现2.2 栈与队列的定义与应用2.3 数组与链表的对比与选择3. 树形结构3.1 树的基本概念与性质3.2 二叉树的存储与遍历3.3 二叉搜索树与平衡树的应用4. 图结构4.1 图的基本概念与表示方法4.2 图的遍历与连通性算法4.3 最短路径与最小生成树算法5. 排序与查找5.1 常用排序算法的实现与性能分析 5.2 二分查找算法与应用5.3 哈希表的概念与应用四、教学方法1. 理论讲解:通过授课方式向学生讲解数据结构的基本概念、原理和算法分析方法。
2. 实验实践:通过编写程序实践,巩固和加深学生对数据结构的理解与应用能力。
3. 课堂讨论:鼓励学生在课堂上提问和讨论问题,促进学生思维的活跃和沟通能力的培养。
4. 课程设计:结合实际案例,进行小组项目设计,培养学生团队合作和创新能力。
五、教学评价与考核1. 平时成绩:包括课堂讨论与实验成绩,在课堂上主动提问、积极参与实验的学生将获得较高成绩。
2. 作业与报告:包括编程作业、实验报告等,学生需要按时完成,并按要求展示实现结果与思路。
《数据结构》课程教学大纲

《数据结构》课程教学大纲课程编号:0806302024课程名称:数据结构英文名称:Data Structure课程类型:专业基础必修课总学时:72 讲课学时:56 上机学时:16学时:72学分:4.5适用对象:计算机科学与技术专业本科生先修课程:计算机导论、C/C++程序设计I、C/C++程序设计II、离散数学一、课程性质、目的和任务数据结构是计算机学科各专业本科学生必修的一门专业基础课,是计算机程序设计的重要理论和实践基础,是培养学生软件设计能力的一门重要课程,在计算机学科的本科教学中,起着非常重要的作用。
本课程研究计算机系统中常用的线性表、二叉树、图等典型数据结构的设计方法,研究各种典型排序和查找算法的设计方法和性能指标,并介绍这些数据结构和算法在实际工程中的应用。
通过学习本课程,使学生深入理解软件设计的基本要素和基本结构,培养逻辑思维能力,提高程序设计能力。
数据结构课程是一门理论和实践相结合的课程,上机实验、课程设计等实践性环节必不可少。
二、教学基本要求本课程是理论与实践并重的课程,要求学生既要掌握数据结构的基础理论知识,又要掌握操作计算机和运行、调试程序的基本技能;能够熟练运用C/C++语言或其它计算机语言编制具有中等难度的应用程序,在实践中培养独立分析问题和解决问题的作风和能力。
本课程的基本要求如下。
理解线性表、栈、队列、串、数组、树、二叉树、图等基本的数据逻辑结构,掌握描述这些数据结构、选择合适的存储结构和实现各种操作的方法。
熟练运用C/C++语言或其它计算机语言表达链式存储结构;熟练运用递归函数表达递归定义、递归算法和递归结构。
理解插入、交换、选择、归并等多种典型排序算法的思想,掌握在线性表、树等各种不同数据结构中的查找算法。
掌握在计算机语言环境中编辑、编译、运行程序的方法,以及单步运行、设置断点、查看变量运行时值等调试程序的方法。
三、教学内容及要求1.绪论①了解数据结构的基本概念,了解数据的逻辑结构、数据的存储结构和对数据的操作,了解抽象数据类型与数据结构的关系。
《数据结构》课程教学大纲

《数据结构》课程教学大纲一、课程概述数据结构是计算机科学与技术专业的重要基础课程之一。
本课程旨在介绍数据结构的基本概念、常用数据结构及其应用。
通过本课程的学习,学生应具备设计和实现基本数据结构的能力,能够分析并解决实际问题中的数据组织与处理需求。
二、教学目标1. 掌握数据结构的基本概念和分类。
2. 理解不同数据结构的特点、存储结构和操作方式。
3. 能够应用各类数据结构解决实际问题,并分析其性能。
4. 具备编写高质量代码的能力,考虑代码的可读性和可维护性。
5. 培养团队合作意识和解决问题的能力。
三、教学内容1. 数据结构基础1.1 数据结构的定义和作用1.2 数据结构的分类及常用术语1.3 数据结构的表示与实现方式2. 线性结构2.1 线性结构的概念和特点2.2 线性表的顺序存储结构和链式存储结构2.3 线性表的基本操作(插入、删除、查找)2.4 栈和队列的定义、基本操作以及应用3. 非线性结构3.1 树形结构的概念和特点3.2 二叉树及其存储结构(顺序存储和链式存储)3.3 二叉树的遍历(先序、中序、后序)3.4 树与森林的转换和应用4. 图结构4.1 图的定义和基本术语4.2 图的存储结构(邻接矩阵和邻接表)4.3 图的遍历(深度优先搜索和广度优先搜索)4.4 最小生成树和最短路径算法5. 查找算法5.1 查找的基本概念和分类5.2 顺序查找算法5.3 二分查找算法5.4 哈希查找算法6. 排序算法6.1 排序的基本概念和分类6.2 内部排序算法(插入排序、冒泡排序、选择排序、快速排序、归并排序)6.3 外部排序算法四、教学方法1. 集中讲述与课堂演示相结合的教学方法。
2. 利用多媒体技术展示数据结构的基本概念、实例和操作过程。
3. 提供编程实践的机会,让学生独立设计和实现各类数据结构。
4. 组织小组讨论和团队合作,解决数据结构相关问题。
五、考核方式1. 平时成绩包括课堂表现、作业、实验和参与度。
数据结构课程教学大纲

《数据结构》课程教学大纲课程名称:数据结构(Data Structures)课程编号:CX414120A学分:4总学时:64(48+16)适用专业:计算机科学与技术先修课程:离散数学,C语言程序设计一、课程的性质、目的与任务数据结构是计算机科学与技术专业的一门专业基础课程。
通过课堂教学、课外练习和上机实习,使学生了解数据对象的特性及数据组织的基本方法,并初步具备分析和解决现实世界问题在计算机中的表示方法和及其处理的能力,让学生培养良好的程序设计技能,为后续课程的学习和科研工作的参与打下良好的基础。
二、教学基本要求✧了解线性表、栈、队列、字符串、数组、广义表、树、二叉树、图、查找表等几种数据结构的特性及数据组织的基本方法;✧理解各数据结构上的基础操作方法及复杂度的分析方法;✧掌握各数据结构及查找、排序的基本理论和基本知识,使学生具备从数据结构的角度出发,开发设计出较复杂软件的能力。
三、教学内容第一章绪论(4学时)1.数据,数据类型,数据结构(逻辑结构和存储结构)(1学时)2.数据结构的主要运算与基础知识(1学时)3.算法复杂度分析(2学时)算法的定义、算法的描述、算法设计的要求、算法分析初步第二章线性表(4学时)1.线性表的定义和基本运算(0.5学时)2.线性表的存储结构和实现(3学时)向量(顺序)存储结构、链式存储结构(单链表、双向链表和循环链表)3.链式表的应用(多项式的表示与相加) (0.5学时)第三章栈和队列(4学时)1.栈(2学时)栈的定义和基本运算、存储结构和实现、应用举例及栈与递归过程2.队列(2学时)队列的定义和基本运算、存储结构和实现及双端队列、输入和输出受限队列第四章串(3学时)1.串的定义、运算和存储结构(0.5学时)2.串的基本运算的实现(2.5学时)串的匹配、KMP算法及NEXT函数第五章数组和广义表(3学时)1.数组的定义和运算(0.5学时)2.数组的顺序存储结构及存储地址的计算(1学时)3.矩阵(特殊矩阵、稀疏矩阵)的压缩存储(1学时)4.广义表的定义、基本运算和存储结构(0.5学时)第六章树和二叉树(8学时)1.树的定义、基本运算和存储结构(1学时)2.二叉树的定义、性质和存储结构(顺序、链式) (1.5学时)3.二叉树的遍历和线索二叉树(2学时)4.树、二叉树与森林的转换;树和森林的遍历(1.5学时)5.二叉树的应用(2学时)二叉排序树、Huffman树第七章图(8学时)1.图的定义和术语(1学时)2.图的存储结构(2学时)3.图的遍历(1学时)4.图的连通性问题(连通分量、生成树、最小生成树) (1学时)5.DAG图及其应用(2学时)拓扑排序、关键路径6.最短路径(1学时)单源最短路径、每对顶点间的最短路径第九章查找(8学时)1.概述(0.5学时)2.顺序表的查找(顺序查找、折半查找、分块查找) (2学时)3.树表的查找(3学时)二叉排序树、平衡二叉树、B_树和B+树4.哈希表(Hash) (2.5学时)基本概念、Hash函数与Hash表的构造方法、Hash表的查找和冲突处理方法第十章内部排序(6学时)1.概述(0.5学时)2.插入排序(直接插入排序、折半插入排序、2-路插入排序、Shell排序) (1.5学时)3.选择排序(直接选择排序、树型选择排序、堆排序) (1.5学时)4.交换排序(冒泡排序、快速排序) (1.5学时)5.归并排序(2-路归并排序) (0.5学时)6.基数排序(0.5学时)实验内容:(8学时)实验一、指针与结构体操作实验二、线性表及其应用实验三、栈与队列操作实验四、串及其应用实验五、数组及其应用实验六、二叉树建树与遍历实验七、图的基本操作实验八、查找与排序四、教学参考书[1]严蔚敏等,《数据结构》(第二版)清华大学出版社,1993[2]严蔚敏等,《数据结构题集》,1995[3] William Ford,William Topp,《Data Structure with C++》清华大学出版社Prentice Hall联合出版,1996五、说明实验内容具体内容及要求见实验指导书。
《数据结构》 课程教学大纲

《数据结构》课程教学大纲课程名称(中文/英文):数据结构课程代码:80504405课程类型:专业基础课适用专业:计算机信息管理先修课程:C语言程序设计学时数:54 其中:(实验/实践学时数)24学分数:3 考核方式:考试编制单位:机电与信息工程系编制时间:2009-3-10执笔者:审核人:一、教学大纲说明(一)课程的地位、作用和任务《数据结构》在计算机科学中是一门综合性的专业基础课。
数据结构的研究不仅涉及到计算机硬件的研究范围,而且和计算机软件的研究有着密切的关系,无论是编译原理还是操作系统,都涉及到数据元素在存储器中的分配问题。
可以认为数据结构是介于数学,计算机硬件和计算机软件三者之间的一门核心课程。
在计算机科学中,数据结构不仅是一般程序设计的基础,而且是设计和实现编译原理、操作系统、数据库系统及其他系统程序和大型应用程序的重要基础。
(二)课程教学的目的和要求通过本课程的学习,学生应掌握分析研究计算机加工的数据结构的特性,以便为应用涉及的数据选择适当的逻辑结构、存储结构及相应算法,并初步了解对算法的时间分析和空间分析技术。
另一方面,通过对本课程算法设计和上机实践的训练,还应培养学生的数据抽象能力和程序设计的能力。
(三)课程教学方法与手段讲练结合,多媒体演示,任务驱动。
本课程应采用面授讲解为主、指导学生自学为辅的教学方法,利用多媒体教学手段,制作条理清晰的投影和动态的课件,加强学生的理解。
(四)课程与其它课程的联系可以《算法分析》和《编译原理》的前沿课程,作为培养学生理解面向过程的程序设计思想和算法设计思想(五)教材与教学参考书教材:《数据结构》邓文华清华大学出版社2007年12月第二版参考书:《数据结构(C语言版)》赵坚二、课程的教学内容、重点和难点课程的教学内容第1章绪论1.1 什么是数据结构1.2 算法描述1.3 算法分析重点:1、数据结构的概念和术语2、数据抽象和抽象数据类型3、算法描述与分析难点:1、数据抽象和抽象数据类型2、算法描述与分析第2章线性表2.1 线性表的定义及其运算2.2 线性表的顺序存储结构2.3 线性表的链式存储结构2. 4 一元多项式的表示及相加2.5 顺序表与链表的比较2.6 算法应用举例重点:1、线性数据结构的特点2、线性表的逻辑结构3、线性表的顺序存储结构4、线性链表难点:线性链表线性表的应用第3章栈和队列3.1 栈3.2 队列重点:1、栈的表示和实现2、队列的抽象数据结构类型及定义3、链队列和循环队列4、队列的应用难点:1、链队列和循环队列2、队列的应用第4章串4.1 串的定义及运算4.2 串的存储结构4.3 串运算的实现4.4 串操作应用举例重点:1、串的概念2、串的运算3、串插入与串删除难点:1、串的运算2、串插入与串删除第5章树5.1 树的基本概念5.2 二叉树5.3 遍历二叉树5.4 线索二叉树5.5 树和森林5.6 哈夫曼树重点:1、二叉树的定义,基本操作,存储结构及性质;2、二叉树的遍历3、树的存储结构,树的遍历4、最优二叉树和哈夫曼编码难点:1、二叉树的存储结构及性质;2、树的存储结构第6章图6.1 图的基本概念6.2 图的存储结构6.3 图的遍历6.4 生成树和最小生成树6.5 最短路径6.6 有向无环图及其应用重点:1、图的存储结构,图的遍历2、图的连通性,最短路径3、图的应用难点:1、最短路径2、关键路径第7章查找7.1 查找的基本概念7.2 线性表的查找7.3 树表查找7.4 散列查找重点:1、顺序查找,有序表的查找2、索引顺序查找,二分查找法3、哈希表难点:哈希表第8章排序8.1 基本概念8.2 插入排序8.3 交换排序8.4 选择排序8.5 归并排序8.6 分配排序8.7 各种内排序方法的比较和选择重点:1、插入排序,快速排序,选择排序2、归并排序,基数排序难点:1、各种排序算法的描述2、各种内部排序方法的比较三、学时分配(一)本实验课的性质、目的本课程是一门理论和实践紧密结合的基础课,实验课紧扣理论课教学,实验目的是让学生能够巩固课程中学习的基本原理,验证算法的正确性,掌握和巩固所学理论知识。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
“数据结构”课程教学大纲和教学规程1. 课程基本信息课程编号:课程名称(中文):数据结构课程名称(英文):Data Structures开课学期:见培养方案与教学计划课程类别:核心专业基础课程总学时数与学分:68学时(4学分,不含实验课时,4学时/周)先修课程:计算机科学与技术导论、高级语言程序设计、高等数学或数学分析、线性代数或高等代数、集合论与图论、近世代数(可缺省)。
教学形式:课堂讲授 + 课外教学 + 实验教学(实验部分实行单列)使用教材:许卓群等编著,《数据结构》,高等教育出版社,1987年5月第1版。
教学参考书:颜蔚敏等编,《数据结构》,清华大学出版社。
注:上述两本书可以互为教材和教学参考书。
大纲制定者:赵致琢、李慧琪(厦门大学计算机科学系)大纲审定者:此外,配合实验课程的教学中,学生应理论联系实际,理论指导实践,通过规范地完成一系列数据结构实验进一步巩固所学的相关书本知识,在知识、能力、素质上得到进一步的提高。
2.课程性质、类别与任务“数据结构”是计算机科学与技术专业一门重点专业基础课程,也是学科专业核心专业基础课程之一,属于必修课程。
本课程的教学任务是针对大量的信息处理对象,介绍对象信息与数据表示的各种抽象的、基本的逻辑结构及其上的基本运算操作。
通过研究各种基本数据结构内在的逻辑关系和它们在计算机中的存储表示方式,初步建立数据结构上基本运算操作的正确性概念,同时,结合各种典型问题讨论其上的各种基本运算操作及其基本算法,讲授各种数据结构的特点、适用范围,以及对一些基本算法效率的定性和定量分析方法,为后续课程提供必要的数据结构基础。
此外,配合实验课程的教学中,学生应理论联系实际,理论指导实践,通过规范地完成一系列数据结构实验进一步巩固所学的相关书本知识,在知识、能力、素质上得到进一步的提高。
3.课程教学的基本要求(教学内容和教学重点)“数据结构”内容的重点是各种数据表示抽象的逻辑结构及其上基本的运算操作。
课程教学的基本要求是通过教学活动,使每一个学生较好地掌握课程的主要内容,能够运用数据结构的理论、方法与技术解决相应的、一般的实际问题。
课程的教学内容主要包括如下知识点,其中,属于重点的内容用黑体标示,今后教学改革拟增加的内容用绛红色标示,部分非重要内容用括弧标注为“一般了解”:数据结构的概念;数据的逻辑结构;数据的存储结构;线性表;非线性表;四种基本的存储映像方法:顺序、链接、索引、散列;数据结构上的基本运算;几种常用的运算;可支撑算法运行的计算模型;算法;算法的特性;计算正确性;数据结构上运算的正确性;数据结构的选择和评价标准;线性结构与顺序表;向量;向量的运算;栈;栈的基本运算;栈的应用(一般了解);递归的概念;栈和递归的关系;队列;队列的基本运算;限制存取点的表:双端队列、双栈、超队列、超栈;数据掩蔽与操作封装;抽象数据类型;基本数据结构上运算的正确性:VDM 元语言或抽象机、操作语义、栈运算的操作语义;链表与动态存储管理;单链表;单链表的存储结构;单链表的基本运算;栈和队列的链接存储表示;栈的链式存储结构及单链形式栈的运算;队列的链式存储结构及单链形式队列的运算;线性表的其他链接存储表示;循环表及其基本运算;双链表及其基本运算;对称表及其基本运算(一般了解);串;串的存储表示;串的顺序存储;串的索引存储及链式存储;串的基本运算及其实现;模式匹配;一些基本的匹配算法;内排序与外排序;排序码;排序;“稳定的”和“不稳定的”排序方法;排序算法好坏的评价标准;一些常用的基本的排序方法:插入排序、直接插入排序、二分插入排序、表插入排序、shell排序、选择排序、直接选择排序、树形选择排序、交换排序、起泡排序、快速排序、分配排序、归并排序、基数排序;线性表的检索;衡量一个检索算法效率的主要标准:平均检索长度;一些基本的检索方法:顺序检索、二分法检索、分块检索、散列表的检索;散列表的检索:散列函数、碰撞、同义词、负载因子;碰撞的处理方法:拉链法、开地址法、插入算法;基于属性的检索:倒排表(一般了解)、多重表(一般了解);树形结构;树;树的递归定义;有序树;森林;二叉树;满二叉树;完全二叉树;树的二叉树表示;森林与二叉树的转换;周游;树形结构的周游;二叉树的周游方式:前序法、后序法、中序法;周游树和树林的主要方式:深度优先周游(先根次序、后根次序)、宽度优先周游、D-检索;树形结构的存储;链式存储:二叉树和树的llink-rlink法存储表示、树的三重链接法存储表示;穿线树:对称序穿线树的概念、按对称序线索化二叉树、按对称序周游对称序穿线树;穿线树上的基本运算操作;顺序存储;完全二叉树的顺序存储;带右链的先根次序表示法;带双标记位的先根次序表示法;带右链的层次次序表示法;带度数的后根次序表示法;不同表示法之间的转换;二叉树周游算法:使用栈的周游算法、使用栈对二叉树进行后序周游、逆转链的周游算法、穿线树、用逆转链的方法对二叉树进行前序周游、Robson周游算法、用Robson算法对二叉树进行后序周游、Siklossy周游算法、用Siklossy算法对二叉树进行对称序周游;树目录;二叉排序树;二叉排序树上的基本运算;最佳二叉排序树;外部路径长度和内部路径长度;最佳二叉排序树的构造方法;具有不等权值结点的最佳二叉排序树的构造方法;平衡的二叉排序树:结点的平衡因子、A VL树的检索和插入算法;字符树(一般了解);双链树;双链树的检索和插入算法;trie结构;trie结构的检索算法;树形结构的其他应用:Huffman算法及其应用;求具有最小带权外部路径长度的扩充二叉树的方法;堆、堆排序;用筛选法建堆的算法和堆排序算法;决策树(一般了解);博弈树(一般了解);图;图的存储表示法:图的相邻矩阵表示法、图的邻接表表示法、图的邻接多重表表示法;图的周游和生成树;图的深度优先周游和宽度优先周游方法、构造网络的最小生成树方法;最短路径;求带权图中从一个结点到其他各结点的最短路径:Dijkstra算法;求带权图中每一对结点之间的最短路径的算法;拓扑排序:有向图的拓扑排序、在有向图的邻接表表示上实现拓扑排序;关键路径(一般了解);数组结构:多维数组、稀疏矩阵和广义表;多维数组:多维数组的行优先和列优先顺序序列;稀疏矩阵:稀疏矩阵的顺序存储、链式存储和散列存储;稀疏矩阵的乘法(一般了解);广义表:广义表、再入表、递归表;广义表的存储:广义表的单链表示法、广义表的双链表示法;文件:顺序文件、文件结构概述、文件的逻辑结构和存储结构、文件上的基本运算操作;顺序文件;顺序文件的分块插值检索(一般了解);散列文件;按桶散列;按桶散列方法的文件组织及查找、修改、插入、删除等运算;索引顺序文件;索引文件的存储结构:静态索引结构、多分树应用;动态索引结构;B-树及其应用、B+树及其应用;类型文件;面向对象表示法:从抽象数据类型到对象结构、类与对象、属性继承、面向对象的数据结构表示方法、对象的基本运算。
抽象数据类型的代数语义(有条件的学校和学生作为选修)。
4.教学目标、教学内容的初步论证和教学过程中应该注意的事项在抽象数据类型和面向对象程序设计技术出现以前,各种数据结构大多数都是静态的,数据表示抽象的逻辑结构和其上的运算操作之间是分离的,其上的运算操作大都借助一些简单的算法加以刻画。
为了保护程序设计中数据的安全,人们提出了数据掩蔽与操作封装的构想,抽象数据类型的概念随之产生,并由此派生出对象的概念,发展了面向对象的程序设计概念、方法和技术,直至今日的Agent和智能Agent。
从那时起,数据掩蔽与操作封装的思想、分层描述与属性继承的思想成为数据描述与程序设计的主导思想之一。
在计算机科学与技术的发展过程中,大量的例子已经充分说明,一个问题求解质量好坏和效率的高低,更多地将是取决于问题抽象之后对象信息表示的数据结构而不是施加在数据结构上的操作。
因此,数据结构课程的重点要落实在各种数据结构及其上的基本运算操作而不是解决各种问题的算法方面(算法问题将来主要由“算法设计与分析”课程去解决),并特别注意以下几点:第一,在介绍各种基本的数据结构时,注意到许多具体数据结构与离散数学密切相关,应该借助离散数学提高数据结构描述的抽象化程度,同时帮助学生建立数据的逻辑结构与存储结构之间的关系,以及如何在数据结构与程序设计语言之间建立有机的联系,这样有利于学生深入掌握计算机科学与技术;第二,算法作为刻画数据结构上基本运算操作的一种载体,应该严格限定在一些简单的基本算法的范围内,同“算法设计与分析”课程之间形成一个合理的分工,不应该过多涉及如何寻找算法和研究算法设计的方法。
算法复杂性的分析也是需要的,但此处仅仅是用于比较不同数据结构的优劣;第三,为了提高抽象化程度,体现学科抽象描述求解问题与具体实现解决问题相分离的特点,防止学生面对一个具体问题,先入为主地带上程序或过程的观点去分析、解决问题,数据结构中对算法的描述不应该使用高级程序设计语言,而应该采用数学语言(带自然语言的算术、代数运算、函数运算等),更不应该片面强调教材中的算法都在计算机上运算通过,因为所有这些算法在今天看来都是最基本的、简单的,它们的正确性是容易判定的。
而且,采用算法刻画数据结构上的基本运算操作,应该介绍可支持算法执行的计算模型;第四,使用抽象的数学语言描述数据结构上的基本运算,欲说明这种运算的含义和正确性,应该介绍操作语义的描述方法(至少要说明存在计算的正确性问题),通过对简单数据结构上基本运算语义的描述,帮助学生初步建立计算的正确性这样一种认识和概念。
但是,这样一种客观的要求在涉及一些诸如动态数据结构那样的对象时,限于学生的基础和课时,进一步的内容应该将来由程序设计方法学、形式语义学等课程去完成。
事实上,一旦采用数学语言来刻画算法的运算操作,就比较容易引入操作语义方法来描述语义。
此时,由于算法描述采用数学语言,引入了支持描述语言的计算模型,因此,无论是采用状态机或元语言描述基本运算操作,建立操作语义将是自然的,而且,有助于学生深入认识数据结构知识;第五,对抽象数据类型的讨论可适当深入,以便引出面向对象表示方法。
从内涵发展的角度考虑,为了支持未来面向对象程序设计方法和技术的学习,“数据结构”课程的内容中拟加强抽象数据类型、数据的对象表示等内容,并展示面向对象方法、面向对象程序设计方法与技术及其发展前景,但不作深入讨论。
学生基础好、师资力量强的学校可通过抽象数据类型的代数理论,可概要介绍刻画复杂对象语义的基本方法和发展前景。
第六,鼓励教师结合学科范型(也称范式),将学科方法论的内容融入教学过程之中(对教师暂不作基本要求),以帮助学生建立与“数据结构”课程内容相关的科学的思想方法。