《数据结构》教学大纲滨州学院.docx
《《数据结构》教学大纲滨州学院.docx》由会员分享,可在线阅读,更多相关《《数据结构》教学大纲滨州学院.docx(11页珍藏版)》请在冰豆网上搜索。
《数据结构》教学大纲滨州学院
《数据结构》教学大纲
(课程代码:
11231002)
一、课程说明
(一)适用专业:
计算机网络专业(专科)、计算机教育(专科)、计算机软件技术(专科)
(二)课程类别:
专业课
(三)课程性质与任务:
《数据结构》是计算机应用专业的一门专业课,主要任务是讨论各种数据结构的逻辑结构,存储结构及有关操作的算法。
目的是使学生学会分析研究计算机加工的数据结构的特性,以便为应用涉及的数据选择适当的逻辑结构、存储结构及相应的算法,并初步了解对算法的时间分析和空间分析技术。
另一方面,通过对本课程算法设计和上机实践的训练,还应培养学生的数据抽象能力和程序设计的能力。
(四)教学目的与要求:
要求学生掌握数据结构的基本概念及其分类,数据结构与数据类型、抽象数据类型的关系,数据结构与算法的关系。
掌握各种基本数据结构的特点、它们的内在逻辑关系及计算机中的表示方法和基本操作的实现方法,熟悉它们在计算机科学中的基本应用。
进一步深入理解掌握递归的概念、递归算法的设计、递归算法的执行以及递归算法与迭代算法之间的关系。
掌握算法设计的步骤和基本的算法分析的方法。
通过对不同的数据结构与算法的对比,学会根据问题的要求合理选择数据结构、设计算法并控制求解算法的空间和时间的复杂性的能力。
掌握数据结构在排序和查找等常用算法中的应用。
(五)先修课程:
离散数学、C语言程序设计
(六)学时、学分数:
6学时/周,共108学时;5学分。
(七)教学方式及设施要求:
课堂教学与上机实验相结合
上机实验设备要求:
PC机、软件环境:
BorlandC或VC++
(八)考核方式与要求:
闭卷考试;要求学生能够掌握各种数据结构的特点及实现方法和适用范围;具备一定的阅读、分析和设计算法的能力;能掌握常规设计方法和技巧。
二、课程内容、基本要求与学时分配
(一)课时分配表
章节次数
章节名称
学时数
总学时
理论
其他
1
绪论
10
6
4
2
线性表
16
8
8
3
栈和队列
12
8
4
4
串
8
6
2
5
数组和广义表
4
4
0
6
树和二叉树
16
10
6
7
图
14
10
4
9
查找
14
10
4
10
内部排序
14
10
4
(二)各章节基本内容及要求
第一章绪论
教学目的:
数据结构的基本概念和术语,抽象数据类型的表示与实现,算法和算法分析。
基本要求:
1.理解各名词、术语的含义,掌握基本概念(结合一定的实际问题举例说明)。
2.了解类C语言,掌握用类C语言书写算法的格式和要求。
3.了解抽象数据类型的表示与实现,掌握用C语言实现抽象数据类型的基本思路和格式。
4.掌握算法的概念,理解算法的五个重要特征的确切含义,了解算法设计的要求。
5.熟练掌握算法时间复杂度的分析方法。
重点与难点:
数据结构的基本概念、算法的时间复杂度和空间复杂度的概念与分析
教学时数:
6学时
教学内容:
1.绪论
1.1什么是数据结构
1.2基本概念和术语
1.3抽象数据类型的表示与实现
1.4算法和算法分析
1.4.1算法
1.4.2算法设计的要求
1.4.3算法效率的度量
1.4.4算法的存储空间需求
第二章线性表
教学目的:
线性表的类型定义,线性表的顺序表示和实现,线性表的链式表示和实现。
基本要求:
1.了解线性表的逻辑结构特性,了解线性表的ADT定义。
2.掌握线性表的两种存储结构:
顺序存储结构和链式存储结构。
3.顺序表:
掌握C描述方法,熟练掌握查找、插入、删除算法;掌握构造一个空的顺序线性表的算法,并掌握在此空表的基础上进行其他基本操作(取元素、求前驱元素、求后继元素等)算法的实现。
4.单链表:
掌握C描述方法,熟练掌握查找、插入、删除算法;掌握顺序、逆序建立单链表的算法;学会如何建立一张空表的算法,并掌握在此表基础上进行其他基本操作(求表长、取元素、清空和销毁等)算法的实现。
5、熟练掌握循环链表、双向循环链表的C描述方法,了解其遍历、插入、删除算法思想。
7.掌握算法的时间复杂度的概念,掌握计算语句频度和估算算法时间复杂度的方法。
了解算法的空间复杂度的概念,了解计算算法的空间复杂度的方法能够从时间和空间复杂度的角度综合比较线性表两种存储结构的不同特点及其适用场合。
重点与难点:
顺序表和单链表的插入、删除算法;顺序存储和链式存储的性能分析
教学时数:
8学时
教学内容:
2.线性表
2.1线性表的类型定义
2.2线性表的顺序表示和实现
2.3线性表的链式表示和实现
2.3.1线性链表
2.3.2循环链表
2.3.3双向链表
第三章栈和队列
教学目的:
栈和队列的定义、存储结构、基本操作和实现算法。
基本要求:
1.掌握栈的有关概念和特点。
2.熟练掌握栈类型的两种实现方法(顺序栈和链栈),特别应注意栈满和栈空的条件以及它们的描述方法。
3.熟练掌握初始化栈、进栈和出栈操作的实现算法。
3.掌握队列的有关概念和特点。
5.熟练掌握循环队列和链队列的基本操作(队列初始化、入队列和出队列)实现算法,特别注意队满和队空的描述方法。
6.会在相应的应用问题中正确选用栈和队列,注意理解操作受限的含义。
重点与难点:
栈和队列的操作特点、循环队列的运算特点。
教学时数:
8学时
教学内容:
3.栈和队列
3.1栈
3.1.1抽象数据类型栈的定义
3.1.2栈的表示和实现
3.2栈的应用举例
3.2.1数制转换
3.2.2括号匹配的检验
3.2.3行编辑程序
3.4队列
3.4.1抽象数据类型队列的定义
3.4.2链队列---队列的链式表示和实现
3.4.3循环队列---队列的顺序表示和实现
第四章串
教学目的:
串及串的一些相关概念,串的存储方法,串的基本运算及实现算法。
基本要求:
1、掌握串的概念。
2、掌握空串、空格串、子串、主串、位置、两串相等的概念。
3、掌握串有哪些基本操作。
4、掌握定长顺序存储结构的表示。
5、掌握基本操作在定长顺序存储结构上的实现。
6、掌握定长顺序存储结构串操作的特点。
重点与难点:
串的表示实现
教学时数:
6学时
教学内容:
4.串
4.1串类型的定义
4.2串的表示和实现
4.2.1定长顺序存储表示
4.2.2堆分配存储表示
4.2.3串的块链存储表示
第五章稀疏矩阵和广义表
教学目的:
数组的存储结构及特殊矩阵的压缩存储,广义表的概念基本要求:
1、掌握数组的概念。
2、理解数组的顺序存储的含义,掌握顺序存储的定位公式
3、矩阵的压缩存储
5、掌握广义表的概念。
6、掌握广义表的三个重要结论。
重点与难点:
矩阵的压缩存储、广义表的结构
教学时数:
4学时
教学内容:
5.数组和广义表
5.1数组的定义
5.2数组的顺序表示和实现
5.3矩阵的压缩存储
5.3.1特殊矩阵
5.3.2稀疏矩阵
5.4广义表的定义
第六章树和二叉树
教学目的:
树的定义和基本术语,二叉树的定义、性质和存储结构,遍历二叉树和线索二叉树,树和森林,哈夫曼树及其应用。
基本要求:
1.掌握树和二叉树的定义和基本术语。
2.熟练掌握二叉树的结构特性和五大性质定理,了解相应性质的证明方法。
3.熟悉二叉树的各种存储结构的特点及适用范围,熟练掌握二叉链表存储结构。
4.遍历二叉树是二叉树各种操作的基础。
掌握采用不同的存储结构实现的二叉树遍历算法。
熟练掌握遍历二叉树的递归算法,并能够结合二叉树的五种基本形态灵活运用遍历算法实现二叉树的其它操作。
掌握按层次遍历二叉树的算法。
能够熟练写出给定二叉树的各种遍历序列,也会根据给定的遍历序列画出二叉树。
5.理解二叉树线索化的实质是建立结点与其在相应序列中的前驱或后继之间的直接联系。
了解二叉树的线索化过程以及在中序线索化树上找给定结点的前驱和后继的方法。
能够熟练地画出给定二叉树的各种线索。
6.了解树的各种存储结构及其特点,掌握树和森林与二叉树的转换方法,了解遍历树和森林的方法以及与遍历二叉树的对比。
了解实现树的各种操作的算法。
7.了解最优树(哈夫曼树)的特性,掌握建立最优树和哈夫曼编码的方法,会计算树的带权路径长度(WPL)。
重点与难点:
遍历二叉树的递归算法、二叉树线索化、建立最优树和哈夫曼编码的方法
教学时数:
10学时
教学内容:
6.树和二叉树
6.1树的定义和基本术语
6.2二叉树
6.2.1二叉树的定义
6.2.2二叉树的性质
6.2.3二叉树的存储结构
6.3遍历二叉树和线索二叉树
6.3.1遍历二叉树
6.3.2线索二叉树
6.4树和森林
6.4.1树的存储结构
6.4.2森林与二叉树的转换
6.4.3树和森林的遍历
6.6赫夫曼树及其应用
6.6.1最优二叉树(赫夫曼树)
6.6.2赫夫曼编码
第七章图
教学目的:
图的定义和术语,图的存储结构,图的遍历,图的连通性问题(最小生成树),有向无环图及其应用(拓扑排序、关键路径),最短路径。
基本要求:
1.掌握图的概念和术语。
2.熟练掌握图的各种存储结构及其构造方法,了解各种存储结构的特点,了解算法的效率和采用的存储结构有密切联系。
3.熟练掌握图的两种搜索路径的遍历。
要掌握遍历的逻辑定义,深度优先搜索和广度优先搜索的算法。
4.掌握图的算法,学会手工计算:
求无向图的连通分量的方法;求最小生成树的普里姆(Prim)算法和克鲁斯卡尔(Kruskal)算法;求有向图的拓扑排序序列算法;求AOE网的关键路径的算法;求最短路径的迪杰斯特拉(Dijkstra)算法和弗洛伊德(Floyd)算法。
重点与难点:
深度优先搜索和广度优先搜索的算法
教学时数:
10学时
教学内容:
7.图
7.1图的定义和术语
7.2图的存储结构
7.2.1数组表示法
7.2.2邻接表
7.2.3十字链表
7.2.4邻接多重表
7.3图的遍历
7.3.1深度优先搜索
7.3.2广度优先搜索
7.4图的连通性问题
7.4.1无向图的连通分量和生成树
7.4.3最小生成树
7.5有向无环图及其应用
7.5.1拓扑排序
7.5.2关键路径
7.6最短路径
7.6.1从某个源点到其余各顶点的最短路径
7.6.2每一对顶点之间的最短路径
第九章查找
教学目的:
基本要求:
1.熟练掌握静态查找表:
顺序表(顺序查找)和有序表(二分查找)的查找算法,理解平均查找长度的计算方法。
2.熟练掌握动态查找表:
二叉排序树(包括平衡二叉树)的构造和查找方法,掌握在二叉排序树中插入和删除结点的方法,注意当二叉平衡树失去平衡时要学会如何做相应的调整。
3.了解B-树、B+树的特点以及它们的建树和查找的过程。
4.熟练掌握哈希表的构造方法,学会如何去寻找哈希函数及处理冲突的方法。
深刻理解哈希表与其它结构的表的实质性的差别。
5.掌握按定义计算各种查找方法在等概率情况下查找成功时的平均查找长度。
重点与难点:
二叉排序树(包括平衡二叉树)的构造、查找和插入、删除的方法;哈希表的构造方法
教学时数:
10学时
教学内容:
9.查找
9.1静态查找表
9.1.1顺序表的查找
9.1.2有序表的查找
9.1.4索引顺序表的查找
9.2动态查找表
9.2.1二叉排序树和平衡二叉树
9.2.2B-树和B+树
9.3哈希表
9.3.1什么是哈希表
9.3.2哈希函数的构造方法
9.3.3处理冲突的方法
9.3.4哈希表的查找及其分析
第十章内部排序
教学目的:
基本要求:
1.了解排序的定义和各种排序方法的特点。
熟悉各种方法的排序过程及其依据的原则,对给定关键字的序列能够熟练写出各种排序算法的排序过程。
2.掌握各种排序方法的时间复杂度。
了解各种排序算法的平均情况和最坏情况的时间性能。
3.理解排序方法“稳定”或“不稳定”的含义。
4.掌握各种内部排序方法的比较以及得出的结论。
重点与难点:
各种排序算法的排序过程和算法;各种排序算法的平均情况和最坏情况的时间性能及比较
教学时数:
10学时
教学内容:
10.内部排序
10.1概述
10.2插入排序
10.2.1直接插入排序
10.2.2其他插入排序
10.2.3希尔排序
10.3快速排序
10.4选择排序
10.4.1简单选择排序
10.4.2树形选择排序
10.4.3堆排序
10.5归并排序
10.6基数排序
10.6.1多关键字的排序
10.6.2链式基数排序
10.7各种内部排序方法的比较讨论
考核方式及要求:
闭卷考试
三、参考教材及资料:
序号
名称
类别
作者
出版社或刊物名称
出版或刊发时间
页码
1
数据结构(C语言版)
教材
严蔚敏吴伟民
清华大学出版社
1997
1-334
2
数据结构(C语言描述)
教材
徐孝凯贺桂英
清华大学出版社
2004
1-275
3
数据结构(C语言版)
教材
姚菁
机械工业出版社
2001
1-219
4
数据结构(C语言)
教材
曲建民
清华大学出版社
2005
1-212
5
数据结构与算法分析----C语言描述
著作
(美)MarkAllenWeiss著冯舜玺译
机械工业出版社
2004
1-252
执笔人:
庄波
教研室主任:
庄波
系主任:
谭业武
计算机科学技术系(部)软件教研室
2006年3月23日