《数据结构》课程教学大纲三套.docx
- 文档编号:11401989
- 上传时间:2023-02-28
- 格式:DOCX
- 页数:26
- 大小:27.80KB
《数据结构》课程教学大纲三套.docx
《《数据结构》课程教学大纲三套.docx》由会员分享,可在线阅读,更多相关《《数据结构》课程教学大纲三套.docx(26页珍藏版)》请在冰豆网上搜索。
《数据结构》课程教学大纲三套
数据结构课程教学大纲(三套)
《数据结构》课程教学大纲(36/36课时)
一、课程的性质和任务
数据结构是计算机及应用专业中一门重要的专业基础课程,在计算机软件的各个领域中均会使用到数据结构的有关知识。
当用计算机来解决实际问题时,就要涉及到数据的表示及数据的处理,而数据表示及数据处理正是数据结构课程的主要研究对象,通过这两方面内容的学习,为后续课程,特别是软件方面的课程打开厚实的基础。
因此,数据结构课程在计算机应用专业中具有举足轻重的作用。
本课程的任务是:
在基础方面,要求学员掌握常用数据结构的基本概念及其不同的实现方法;在技能方面,通过系统学习能够在不同存储结构上实现不同的运算,并对算法设计的方式和技巧有所体会。
总言之,使应用者较全面的掌握各种常用的数据结构,提高运用数据结构解决实际问题的能力。
二、课程的基本要求
本课程的教学基本要求如下:
本课程要求理论必须与上机实践操作相结合,多做题和调试算法,实现算法。
实践项目只利用课堂时间是不够的,必须提前布置给学生。
通过本课程的学习与实践,学生应达到:
1、掌握数据结构的基本概念和基本理论;
2、熟练掌握顺序表、链表、队列、栈、树以及二叉树、图等基本数据结构的设计和分析;
3、熟练地掌握常用算法(递归、遍历、查找、排序)的知识;
4、能对所求解的问题进行分析,抽象出逻辑结构,选择合适的存储结构,定义所需的运算,设计相应的算法;
5、对算法进行分析和评价。
三、教学内容
(一)理论教学
序号
单元
主要内容
教学要求
学时
1
绪论
理论教学
数据结构的基本概念(数据、数据元素、数据类型和数据结构、逻辑结构、存储结构)
2.算法描述和算法评价
了解数据的逻辑结构和物理结构,算法的基本概念;掌握算法复杂度的概念及分析方法
2
2
线性表
理论教学
1.线性表的概念及运算
2.顺序表及基本运算
3.单链表及基本运算
4.循环链表和双链表
5.顺序存储结构与链式存储结构的比较
熟练掌握:
线性表的基本运算;单链表和循环链表的结构特点、基本运算并能设计简单算法
4
3
栈和队列
理论教学
1.栈和队列的概念及运算;
2.栈和队列的顺序、链接存储
3.栈和队列的插入、删除算法及其应用
熟练掌握栈和队列的特征、基本运算并能设计简单算法
4
4
串
理论教学
1.串及其运算、串的存储结构;
熟练掌握串的逻辑结构、存储结构
2
5
树
理论教学
树的定义和表示;
二叉树的定义、重要性质、存储结构和运算;
二叉树的遍历、线索、排序;
二叉树与树和森林的转换;
树的应用:
二叉排序树、哈夫曼树及其应用
熟练掌握:
1.树形结构的基本概念和术语;
2.二叉树定义和存储结构;
3.二叉树的遍历次序及算法
6
6
图
理论教学
图的定义和术语
图的存储结构
图的建立和遍历
图的生成树
最短路径
图的遍历、图的生成算法
熟练掌握图的存储结构和遍历算法,以及生成最小生成树的方法
6
7
查找
理论教学
1.查找的基本概念
2.顺序查找、
3.索引查找
4.树表查找(二叉排序树定义及查找,二叉平衡树的定义)
5.散列查找
熟练掌握顺序查找、二分查找、分块查找、二叉排序树查找的基本思想和算法;散列法基本思想、散列函数的常用构造方法及解决冲突方法
6
8
排序
理论教学
1.排序的基本概念
2.插入排序(直接插入排序、折半插入排序、希尔排序)
3.交换排序(冒泡排序、快速排序)
4.选择排序(简单选择排序、*堆排序)
5.各种排序方法比较
熟悉各种内部排序方法的基本思想和特点;各种排序方法的优缺点、时、空性能和适用场合
6
学时合计72
理论教学
36
实践教学
36
(二)实践环节
序号
单元
主要内容
教学要求
学时
1
绪论
实践项目
分析算法的时间复杂度,并用程序验证。
例如:
求下列算法段的语句频度
for(i=1;i<=n;i++)
for(j=1;j<=i;j++)
x=x+1;
1.
掌握分析算法段的语句频度及时间复杂度,并用程序加以验证
2
2
线性表
实践项目
设计一个通信录信息管理程序,程序要求用结构体定义记录,用单链表存放数据,并具有如下功能:
打开文件(读入文件中记录到链表);添加、插入、删除、查找一个记录;显示所有记录;存盘(保存链表中记录到文件)和退出。
利用单链表的各种运算的算法来解决实际问题;要求学生自己查阅C语言书本,调试完善实践项目。
4
3
栈和队列
实践项目
1、栈和队列的顺序存储结构的所有操作算法的实现;
2、栈和队列的链式存储结构的所有操作算法的实现;
掌握栈和队列的实际应用
4
4
串
实践项目
串中字符及子串的查找和匹配
掌握串的实际应用
2
5
树
实践项目
用模块化的方法设计一个程序进行二叉树的建立和遍历。
主菜单中包括如下功能选项:
1.建立二叉树
2.先序非递归遍历
3.先序递归遍历
4.中序递归遍历
5.后序递归遍历,求叶节点数
6.退出
主要掌握二叉树的几种遍历的递归算法,先序的非递归遍历算法
6
6
图
实践项目
用模块化的方法设计一个程序建立无向图的邻接表并遍历该图。
主菜单中包括如下功能选项:
1建立无向图的邻接表2按深度优先遍历3按广度优先遍历4退出
掌握图的生成和遍历算法
6
7
查找
实践项目
用模块化的方法编一程序测试顺序查找、折半查找、杂凑查找三种算法。
其功能菜单如下:
1顺序查找
2折半查找
3杂凑查找
0退出
写出顺序查找、折半查找(二分查找)的算法并调试通过
6
8
排序
实践项目
用模块化的方法编一程序测试几种排序算法的运行时间。
其功能菜单如下:
1选择排序
2冒泡排序
3希尔排序
4快速排序
0退出
写出几种插入排序算法、交换排序算法和简单选择排序算法并调试
6
学时合计72
理论教学
36
实践教学
36
四、课时分配
《数据结构》课程共4学分,课内72学时,其中理论课36学时,上机36学时。
五、大纲说明
本课程必须理论与上机实践操作相结合,并要教、学、练相结合,讲清基本概念,指出知识要点、重点和难点,并通过实例分析解决算法难点;要求学生认真预习、认真听课、认真思索、认真做实验,通过对算法的编程实现来提高学生的理解和动手能力。
由于内容多、难度大,要特别注重精讲多练,实践项目一定要提前布置给学生,启发学生独立思考、调动学生的主观能动性,鼓励学生多提问题、共同探讨和解决问题。
重点:
线性表的存储和运算;栈和队列的运算;二叉树的遍历和线索,哈夫曼树及应用,二叉排序树;图的生成树,最短路径;散列查找和树表查找;几种排序算法及排序过程。
难点:
链表的运算;后序遍历二叉树;线索二叉树;最短路径等。
六、考核方式
理论考核与实践考核相结合,理论考核(主要考基本概念、基本理论、基本算法,闭卷考试)占40%;实践考核(主要是平时布置的实践项目)占40%;平时(出勤、作业、课堂提问等)占20%。
七、参考教材
教材:
《数据结构(C语言版)》,邵增珍杨品林编著,清华大学出版社,2012年9月。
参考教材:
1.《数据结构---用C语言描述》唐策善、李龙澍、黄刘生高等教育出版社1995
2.《数据结构(C语言篇)习题与解析》李春葆清华大学出版社2000
3.《数据结构(C语言版)》严蔚敏、吴伟民清华大学出版社1997
《数据结构A》课程教学大纲(56/16课时)
DataStructureA
课程代码:
课程性质:
专业基础理论课/必修
适用专业:
信息计算、信息安全
开课学期:
5
总学时数:
72
总学分数:
4.5
编写年月:
修订年月:
执笔:
高学军、刘科峰、李小英
一、课程的性质和目的
数据结构是信息与计算科学专业的一门重要专业基础课程。
当用计算机来解决实际问题时,就要涉及到数据的表示及数据的处理,而数据表示及数据处理正是数据结构课程的主要研究对象,通过这两方面内容的学习,为后续课程,特别是软件方面的课程打下了厚实的知识基础,同时也提供了必要的技能训练。
因此,数据结构课程在信息与计算科学专业中具有举足轻重的作用。
二、课程教学内容及学时分配
第1章 绪论 (4学时)
理解数据、数据元素和数据项的概念及其相互间的关系。
理解数据结构的逻辑结构、存储结构的联系与区别,以及在数据结构上施加的运算及其实现。
掌握简单的算法分析方法。
本章知识点为:
数据、数据元素、数据对象、数据结构、存储结构和数据类型等概念术语的确定含义;抽象数据类型的定义、表示和实现方法;描述算法的类C语言;算法设计的基本要求以及从时间和空间角度分析算法的方法。
第2章 线性表 (10学时,2个学时实验上机)
理解线性表的定义及其运算。
理解顺序表和链表的定义、组织形式、结构特征和类型说明,掌握在这两种表上实现的插入、删除和按值查找的算法。
了解循环链表、双向(循环)链表的结构特点和在其上施加的插入、删除等操作。
掌握稀疏多项式在线性表的两种存储结构上的实现方法。
本章知识点为:
线性表的逻辑结构定义、抽象数据类型定义和各种存储结构的描述方法;在线性表的两类存储结构(顺序的和链式的)上实现基本操作;稀疏多项式的抽象数据类型定义、表示和加法的实现。
第3章 栈和队列 (6学时,2个学时实验上机)
理解栈和队列的定义、特征及在其上所定义的基本运算。
掌握在两种存储结构上对栈和队列所施加的基本运算的实现。
熟练掌握循环队列和链队列的基本操作实现算法,尤其是队满和队空的描述方法。
本章知识点为:
抽象数据类型栈的定义;栈的表示和实现;栈的应用;抽象数据类型队列的定义;链队列;循环队列。
第4章 串 (4学时,2个学时实验上机)
熟悉串的七种基本操作的定义,并能利用这些基本操作来实现串的其它各种操作的方法。
熟练掌握在串的定长顺序存储结构上实现串的各种操作的方法。
掌握串的堆存储结构以及在其上实现串操作的基本方法。
本章知识点为:
串的数据类型定义;串的三种存储表示:
定长顺序存储结构、块链存储结构和堆分配存储结构;串的各种基本操作的实现及其应用;
第5章 数组和广义表 (6学时,2个学时实验上机)
了解数组的两种存储表示方法,并掌握数组在以行为主的存储结构中的地址计算方法。
掌握对特殊矩阵进行压缩存储时的下标变换公式。
了解稀疏矩阵的两种压缩存储方法的特点和适用范围,领会以三元组表示稀疏矩阵时进行矩阵运算采用的处理方法。
掌握广义表的结构特点及其存储表示方法。
本章知识点为:
数组的类型定义和表示方式;特殊矩阵和稀疏矩阵的压缩存储方法及运算的实现;广义表的逻辑结构和存储结构和广义表的操作。
第6章 树和二叉树 (12学时,2个学时实验上机)
深刻理解树的定义、性质及其存储方法,熟练掌握二叉树的二叉链表存储方式、结点结构和类型定义,并能画出给定二叉树的二叉链表的结构示意图;理解并掌握二叉树的三种遍历方法,并能写出该三种遍历的算法;会完成树、森林与二叉树间的相互转换;理解哈夫曼树的构造方法,并能对给定的数据集合构造出哈夫曼树。
本章知识点为:
二叉树的定义、性质和存储结构;二叉树的遍历和线索化以及遍历算法的各种描述形式;树和森林的定义、存储结构、与二叉树的转换、遍历;树的多种应用。
第7章 图 (12学时,2个学时实验上机)
理解图的基本概念及术语,掌握图的两种存储结构(邻接矩阵和邻接表)的表示方法;熟练掌握图的两种遍历(深度优先搜索遍历和广度优先搜索遍历)的算法思想、步骤,并能列出在两种存储结构上按上述两种遍历算法得到的序列;理解最小生成树的概念,能按Prim算法构造最小生成树;了解并掌握拓扑排序、关键路径、最短路径的算法思想。
本章知识点为:
图的定义和术语;图的四种存储结构:
数组表示法、邻接表、十字链表和邻接多重表;图的两种遍历策略:
深度优先搜索和广度优先搜索;图的连通性:
连通分量和最小生成树;拓扑排序和关键路径;两类求最短路径问题的解法。
第8章 查找 (10学时,2个学时实验上机)
了解查找的基本思想及查找成功和不成功的概念,掌握在顺序表、有序表、索引表、散列表等上的查找方法和算法,并能求出相应的平均查找长度。
本章知识点为:
讨论查找表(包括静态查找表和动态查找表)的各种实现方法:
顺序表、有序表、树表和哈希表;平均查找长度的讨论。
第9章 内部排序 (8学时,2个学时实验上机)
了解排序的基本思想和基本概念,理解和掌握插入排序、冒泡排序、快速排序、直接选择排序、堆排序、归并排序和基数排序的基本思想、步骤及算法。
本章知识点为:
讨论比较各种内部排序方法,插入排序、交换排序、选择排序、归并排序和基数排序的基本思想、算法特点、排序过程以及它们的时间复杂度分析。
在每类排序方法中,又从简单方法入手,重点讨论性能先进的高效方法。
三、课程教学的基本要求
本课程是信息与计算科学专业的重要专业基础课,计算机科学各领域及有关的系统和应用软件都要用到各种数据结构。
在教学方法上采用课堂讲授,课后自学,课堂讨论等教学形式。
(一)课堂讲授
本课程属于基础理论课程。
在传授知识原理的前提下,配合实际应用例子,由浅入深善于诱导,使学生从被动吸收知识的状态下,转化到主动索取知识的状态中来,并采用多媒体辅助教学,加大课堂授课的知识含量。
注重培养学生的学习兴趣,提高学生的基本素质。
(二)课后自学
为了培养学生整理归纳,综合分析和处理问题的能力,每章都安排一部分内容,课上教师只给出自学提纲,不作详细讲解,课后学生自学。
(三)课堂讨论
课堂讨论的目的是活跃学习气氛,开拓思路。
教师应认真组织,安排重点发言,充分调动每一名同学的学习积极性,做好总结。
(四)课外作业
为了让学生巩固所学的知识,每章都布置一定数量课外作业。
(五)实验
用C语言或C++语言完成一些算法设计题。
培养学生的算法设计能力和程序设计能力。
总评成绩:
平时作业占30%,闭卷考试占70%。
四、本课程与其它课程的联系与分工
先修课程:
离散数学,C++面向对象程序设计等。
后续课程:
操作系统,数据库原理等。
五、建议教材与教学参考书
[1]严蔚敏吴伟民编著,数据结构(C语言版),北京:
清华大学出版社,2004
[2]严蔚敏吴伟民编著,数据结构题集(C语言版),北京:
清华大学出社,2004
[3]WillanFord,WillianTopp.DataStructureswithC++.NewJersey:
PrenticeHallInc,AdivisionSimon&SchusterCompany,1996(数据结构——C++语言描述.北京:
清华大学出版社,1997)
[4]徐孝凯,数据结构实用教程(C/C++描述),北京:
清华大学出版社,1999
[5]陈慧南.数据结构(使用C++语言描述),南京:
东南大学出版社,2001
[6]殷人昆,陶永雷,谢若阳等.数据结构(用面向对象方法与C++描述),北京:
清华大学出版社,1999
《数据结构》课程教学大纲(36/18课时)
课程编号:
课程名称:
数据结构
英文名称:
DataStructure
课程类型:
专业必修课
总学时:
54理论学时:
36实验学时:
18
适用对象:
课程简介:
数据结构主要研究数据的各种逻辑结构和存储结构,以及对数据的各种操作。
主要有三个方面:
数据的逻辑结构;数据的物理存储结构;对数据的操作(或算法)。
通常,算法的设计取决于数据的逻辑结构,算法的实现取决于数据的物理存储结构及该算法的时、空复杂度分析。
用计算机来解决任何问题时,都要进行数据表示及数据处理,而数据表示以及数据处理正是数据结构课程的主要研究对象。
通过本课程的学习,使学生透彻地理解数据结构的逻辑结构和物理结构、基本概念以及有关算法,培养基本的、良好的程序设计技能,编制高效可靠的程序,为后续课程打下了厚实的知识基础,同时也提供了必要的技能训练。
因此,《数据结构》课程在计算机应用中具有举足轻重的作用。
学习本课程前,学生应具备计算机的基本操作能力,并掌握至少一门计算机高级编程语言。
一、课程性质、目的和任务
1、本课程是卫生信息管理专业学生的一门必修课。
2、本课程目的:
在基础理论方面,要求学生掌握常用数据结构的基本概念及其不同的实现方法;在理论应用方面,通过系统学习能够在不同存储结构上实现不同的运算,并对算法设计和技巧有所体会。
3、本课程将系统学习数据结构方面的知识,提高本专业学生在应用数据结构解决实际问题中的能力。
二、教学基本要求
通过本课程的学习,学生应能达到下列要求:
(1)了解数据结构及其分类、数据结构与算法的密切关系。
(2)掌握各种基本数据结构及其操作、学会根据实际问题的要求选择适当的数据结构。
(3)掌握设计算法的步骤和算法分析方法。
(4)掌握线性表、数组、栈、队列以及树和图的定义、存储结构及基本算法的实现。
(5)掌握在顺序表、有序表、散列表等上的查找算法。
(6)掌握插入排序、冒泡排序、快速排序、直接选择排序、堆排序、归并排序的基本思想及算法;了解其算法时、空复杂度的分析。
三、教学内容及要求
(一)数据结构概述
【掌握】
1.算法的描述方法;
2.掌握算法时间复杂度的计算方法。
【了解】
1.数据、数据元素、数据项、结点及抽象数据类型等数据结构的基本概念;
2.数据结构在计算机编程中的作用和地位;
3.数据结构课程所包含的三方面的内容;算法的定义,掌握算法的五个特点;
4.算法时间(空间)复杂度概念。
(二)顺序表和链表
【掌握】
1.顺序表的结构定义;
2.熟练掌握顺序表的构造、置空、插入、删除等基本操作;
3.掌握动态分配内存和释放函数的使用方法。
【熟悉】
1.单链表的建立、查找、插入、删除算法;
2.理解单链表的逆向链接算法思想。
【了解】
1.线性表的特性,掌握线性表的表示方法;
2.顺序表的概念,掌握顺序表的存储方式;
3.线性链表的定义,掌握线性链表的存储特点。
(三)栈和队列
【掌握】
1.栈的表示方法及基本操作;
2.线性队列的表示方法及相关运算;
3.掌握循环队列的基本算法。
【熟悉】
1.递归的执行过程;
2.栈在解决实际问题中的应用。
【了解】
1.栈的基本概念,掌握其存储特性;
2.队列的基本概念,掌握其存储特性;
3.循环队列的概念;
4.队列在解决实际问题中的应用。
(四)串
【掌握】
1.串的逻辑结构定义;
2.串的基本运算及其实现。
【熟悉】
1.串的匹配算法;
2.串在解决实际问题中的应用。
(五)数组
【掌握】
1.一维、二维数组定义的方法;
2.数组的存储方式(以列为主序、以行为主序),会计算数组元素的存储位置;
3.掌握矩阵的转置、求和和乘积算法;
4.稀疏矩阵的表示方法;
5.掌握基于三元组顺序存储的矩阵转置算法。
【了解】
1.数组的基本概念;
2.矩阵的概念;
3.稀疏矩阵的概念。
(六)递归
【掌握】
1.递归的定义方法和递归算法的设计。
【熟悉】
1.常用的递归算法。
(七)树
【掌握】
1.树的表示方法;
2.掌握二叉树的性质;
3.掌握二叉树的表示方法,掌握二叉树的遍历算法;
4.掌握线索二叉树的概念及应用;
5.掌握二叉排序树的建立、查找、删除算法;
6.掌握树与二叉树的相互转换;
7.掌握Huffman树的概念,熟练掌握Haffman编码方法,会构造Haffman树。
【了解】
1.树的概念,掌握结点、结点的度、树的度、森林等的概念;
2.二叉树的基本概念;
3.二叉排序树的概念。
(八)图
【掌握】
1.图的存储结构及深度(DFS)和广度(BFS)优先搜索方法及其实现;
2.求图的最小生成树的普里姆算法和克鲁斯卡尔算法并了解其实现算法;
3.掌握最短路径的求解问题;
4.掌握拓扑排序的方法并了解其实现算法。
【了解】
1.图的定义和术语;
2.图的生成树的概念。
(九)查找
【掌握】
1.顺序查找和折半查找的方法及实现;
2.利用除留余数法构造散列函数的方法,利用线性探查法和链接法处理冲突的方法。
【了解】
1.查找的相关概念;
2.哈希查找的基本思想,掌握构造哈希函数的方法;
3.哈希散列表的定义。
(十)排序
【掌握】
1.直接插入排序、直接选择排序、冒泡排序的方法及其实现;
2.快速排序、堆排序、二路归并排序的方法及其实现。
【了解】
1.各种排序方法的稳定性、时间复杂度和空间复杂度。
四、实验
实验一表的操作
(一)实验类别:
验证性、设计性实验。
(二)实验目的:
1.学会在VC环境下使用结构定义方法;
2.掌握顺序表的操作(构造、置空、插入、删除等操作)。
(三)实验内容:
1.熟悉VC编译环境,利用数组构造一个线性顺序表;
2.编程实现对该表的遍历、插入、删除操作
(四)实验学时:
1。
实验二栈和队列的操作
(一)实验类别:
验证性、设计性实验。
(二)实验目的:
1.掌握线性队列的链表表示方法;
2.掌握队列的入队和删除运算。
(三)实验内容:
1.基于链表结构建立一个队列;
2.编程实现入队、出队操作。
(四)实验学时:
1。
实验三串的操作
(一)实验类别:
验证性、设计性实验。
(二)实验目的:
1.掌握串的表示方法,模式匹配算法。
(三)实验内容:
1.对于顺序串;编程实现BF算法。
(四)实验学时:
1。
实验四数组
(一)实验类别:
验证性、设计性实验。
(二)实验目的:
1.掌握一维、二维数组定义的方法;
2.掌握矩阵的转置、求和算法。
(三)实验内容:
1.建立两个二维数组,对其中一个进行转置操作,然后再对两数组进行加运算。
(四)实验学时:
1。
实验五递归
(一)实验类别:
验证性、设计性实验。
(二)实验目的:
1.掌握递归的设计方法。
(三)实验内容:
1.用递归方法解决八皇后问题。
(四)实验学时:
2。
实验六树的操作
(一)实验类别:
验证性、设计性实验。
(二)实验目的:
1.掌握二叉树的节点定义及表示方法;
2.掌握二叉树的遍历算法。
(三)实验内容:
1.定义一个二叉树节点的抽象数据类型,建立一个二叉树;
2.编程实现对其的前序、中序和后序访问。
(四)实验学时:
3。
实验七图的操作
(一)实验类别:
验证性、设计性实验。
(二)实验目的:
1.掌握图的存储结构、构造方法;
2.掌握深度(DFS)和广度(BFS)优先搜索方法。
(三)实验内容:
1.定义一个图结构;
2.编程对其进行深度遍历。
(四)实验学时:
3。
实验八查找
(一)实验类别:
验证性、设计性实验。
(二)实验目的:
1.掌握顺序查找和折半查找的方法。
(三)实验内容:
1.对一个有序表,编程实现对该表的顺序、折半查找;
(四)实验学时:
3。
实验九排序
(一)实验类别:
验证性、设计性实验。
(二)实验目的:
1.掌握直接插入排序、冒泡排序的方法及其实现。
(三)实验内容:
1.建立一个无序表,分别编
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 课程 教学大纲