1、数据结构教学大纲课程编号:13140203英文名称:Data Structure学 分:5学 时:96(其中理论学时 64,实践学时 32)课程类别:专业平台课程授课对象:信息管理与信息系统专业学生教学单位:机械与电气工程学院计算机科学技术学科修读学期:第 2学期一、教学任务课程内容包括基本的算法理论,数据的逻辑结构,数据的存储结构以及基于这些结构上的算法,数据组织和处理技术,基于数据结构的分析和解决问题的方法、算法实现和程序设计技能的训练。通过本课程的学习,使学生具备较扎实的软件技术知识和技能,初步具备从现实问题抽象到信息范畴再到计算机中数据组织和处理的转换,实现解决问题的较综合的能力;为学
2、生的专业素质和分析及解决问题的能力奠定基础;为后续课程数据库原理与应用等打下一定的基础。二、教学目标1明确本课程对用计算机解决实际问题的作用;明确把现实问题通过计算机来解决的过程和方法;掌握对计算机加工的数据对象特性的分析方法,掌握线性结构、树结构、图结构等结构的特性;掌握基本的查找和排序方法。2能根据实际问题能选择合适的数据逻辑结构和存储结构,并在此基础上掌握对这些数据对象的操作技术。具备相应结构的组织数据的方法,基本具备在这些结构上编写结构清晰,正确易读,效率较高算法的能力,初步具备编制较综合性程序和解决问题的能力;初步具备算法评价的能力。3初步具备通过对现实世界中问题的分析、能把处理对象
3、的数据和关系抽象到信息世界里的结构模型、然后把结构模型组织到计算机里,从而在这基础上编制算法实现问题求解的较综合的能力。 三、教学内容理论:(一)基本概念1教学内容数据、数据对象、数据元素、数据结构和算法等基本概念,抽象数据类型表示方法,算法分析方法。重点:数据结构,数据关系、算法时间复杂度分析难点:算法时间复杂度分析2教学要求了解本课程研究的对象、内容和过程,明确数据、数据对象、数据的逻辑结构、存储结构的联系与区别、抽象数据类型、算法的概念,明确算法与数据结构的关系、描述算法的方法,基本掌握简单的算法分析方法。(二)线性结构1教学内容线性表,栈,队列,串,数组,广义表。重点:线性表顺序存储结
4、构和链式存储结构及其基本操作方法和算法;栈的特点及入栈、出栈等基本操作方法,栈在顺序存储结构和链式存储结构上的基本操作算法;队列的特点及入队、出队等基本操作方法,队列在顺序存储结构和链式存储结构上的基本操作算法;计算数组的存储地址。难点:线性链表的基本算法及初步应用;栈和队列在链式存储结构上的基本算法,循环队列的基本算法及初步应用。2教学要求明确线性表、栈、队列、数组和广义表等线性结构的概念与基础知识,基本掌握线性结构的抽象数据类型定义;掌握顺序表和链表的定义和组织形式;掌握线性表的顺序存储结构和链式存储结构,掌握单链表的实现方法、基本运算和算法,并能初步应用线性结构,了解循环链表、双向链表;
5、掌握在顺序存储和链式存储结构栈的基本操作方法及算法;能初步应用栈结构;掌握在顺序存储和链式存储结构队列的基本操作方法及算法;能初步应用队列结构;掌握顺序存储数组的存储地址计算方法;了解特殊矩阵的存储方法和存储地址计算方法;基本掌握求广义表的表头、表尾、长度和深度方法。 (三)树结构1教学内容树,二叉树,二叉树与树、森林之间的转换,哈夫曼树与哈夫曼编码。重点:二叉树的的存储结构;二叉树的性质;二叉树的前序、中序、后序遍历方法及其算法;二叉树的初步应用算法;构造哈夫曼树和哈夫曼编码的方法;森林与二叉树之间的转换方法。难点:二叉树的初步应用算法;构造哈夫曼树的算法和构造哈夫曼编码的方法。2教学要求明
6、确树的基本概念与存储结构;明确二叉树的概念和二叉树抽象数据类型定义,掌握二叉树的顺序存储表示和链式存储表示方法,掌握二叉树的性质、遍历方法,掌握前序、中序、后序遍历的递归算法,掌握二叉树的初步应用算法;明确线索二叉树的概念,基本掌握前序、中序、后序线索化二叉树的方法;掌握树、森林与二叉树的转换方法,了解树与森林的常用遍历方法;明确哈夫曼树和哈夫曼码的概念,掌握哈夫曼树和哈夫曼码的构造方法,基本掌握构造哈夫曼树的算法,了解哈夫曼树的应用。(四)图结构1教学内容图的基本概念、存储结构,图的遍历,最小生成树,最短路径,拓扑排序。重点:图的邻接矩阵和邻接表表示方法和基本算法;图的深度优先遍历算法和广度
7、优先遍历算法;构造最小生成树的方法和算法;求拓扑序列的方法;求最短路径的方法。难点:建立图的邻接表的算法;图的深度优先遍历算法和广度优先遍历算法;构造最小生成树的算法;求拓扑序列的算法;求最短路径的方法和算法。2教学要求明确图的基本概念与抽象数据类型定义,掌握图的邻接矩阵存储与邻接表存储的方法和算法;明确图的遍历的概念,掌握图的深度优先搜索与宽度优先搜索的方法与算法,基本掌握求图的连通分量的方法;明确图的生成树和最小生成树的概念,掌握构造图的最小生成树的方法;掌握求图的最小生成树的算法;明确图的拓扑排序的概念,掌握求图的拓补排序的方法,基本掌握求图的拓补排序的算法;明确图的最短路径的概念,掌握
8、求图的单源点最短路径的方法,基本掌握求图的单源点最短路径的算法。(五)查找1教学内容查找相关概念,顺序查找,二分查找,二叉排序树,哈希查找。重点:顺序查找、二分查找的方法、算法和时间复杂度的分析方法。构造二叉排序树的方法及算法;二叉排序树中查找、插入结点的方法和算法,用线性探测法和链地址法解决冲突构造哈希表的方法及相关平均查找长度的计算。难点:二叉排序树中删除节点的方法与算法;平衡化二叉树的方法;用线性探测法和链地址法解决冲突构造哈希表,哈希表查找失败的平均查找长度的计算。2教学要求明确查找的有关概念;掌握顺序查找、二分查找查找的方法及算法,掌握顺序查找、二分查找查找中比较次数的计算方法和查找
9、的时间复杂度分析方法;明确二叉排序树的概念,掌握构造二叉排序树的方法和算法,掌握二叉排序树查找的方法和和算法,掌握插入二叉排序树中结点的方法和算法,了解删除二叉排序树中结点的方法;明确平衡二叉树的的概念,了解平衡化二叉树的方法;明确哈希查找的概念,掌握常用的哈希函数构造哈希表的方法,掌握用线性探测法和链地址法解决冲突构造哈希表的方法及进行查找长度的计算。(六)排序1教学内容排序相关概念,插入排序,冒泡排序,选择排序,快速排序,堆排序,归并排序,希尔排序,基数排序。重点:插入排序、快速排序、堆排序、二路归并排序的方法;常用排序的时间复杂度和空间复杂度。难点:常用排序的时间复杂度分析;常用的内部排
10、序的最好、最坏情况下的时间复杂度的分析;快速排序、堆排序、二路归并排序的方法和算法。2教学要求明确排序的有关概念,明确内部排序的时间复杂度、空间复杂度及算法稳定性的概念,基本掌握常用排序的时间复杂度和空间复杂度的分析方法及计算,了解常用的内部排序的最好、最坏情况下的时间复杂度;掌握插入排序的概念、方法和算法,掌握快速排序、堆排序、归并排序的概念和方法,了解快速排序、堆排序、归并排序的算法,了解希尔排序和基数排序的概念和方法。实验:本课程具有较强的实践性,通过实验使学生巩固理论课中讲授的知识和技能。学习选择合适的逻辑结构和存储结构,数据组织方法,并在此基础上掌握对这些数据对象的操作技术,针对线性
11、表、栈、队列、数组、二叉树、图等结构,通过高级语言编程,进行结构设计和实现训练,巩固和提高结构应用、算法设计与实现的能力,同时培养学生科学的思想方法,编写结构清晰、正确易读、效率较高的算法的能力。 实验一 大整数相加1实验目的:线性表的链式存储结构及其基本运算、实现方法和技术的训练。程序设计训练。2实验内容:给定两个非负整数 A和 B, 计算出 A+B的值。整数 A和 B的位数可能超过整数类型数据能存储的范围。要求计算并输出 A+B的值。3实验基本要求:(1) 正确输入两个大整数;(2) 利用两个单链表存储结构存储两个大整数;(3) 对存储于单链表的两个大整数,根据数据加法的要求,通过对链表的
12、操作,使两个大整数的和存储于单链表;(4) 输出两个大整数的和,即输出存储和的单链表中内容。实验二 栈序列匹配1实验目的:栈的存储结构及其基本运算、实现方法和技术的训练。2实验内容:对于给出的入栈序列和出栈序列,判断这两个序列是否相容。即能否利用栈操作将入栈序列转换为出栈序列。3实验基本要求:入栈序列和出栈序列均为字符型数据,由键盘输入,其长度不超过10个字符。若入栈序列和出栈序列相容(即能利用栈操作将入栈序列转换为出栈序列),则输出 yes,否则输出 no。在判断栈序列的匹配过程中,输出入栈、出栈的过程和栈中的元素。实验三 二叉排序树1实验目的:非线性结构二叉树的存储及其遍历、搜索方法、技术
13、和算法的训练,二叉树知识和技能应用的设计训练。2实验内容:输入一个整数关键字序列 L,生成一棵用链式存储结构存储的二叉排序树,对该二叉排序树能进行查找和插入结点的操作,并对该二叉排序树中结点的关键字按递增和递减顺序输出。3实验基本要求:输入数据的第一行为一个正整数 T, 表示测试数据的组数。然后是T组测试数据。每组测试数据的第一行输入正整数 n(5n20),第二行输入 n个整数,要求依次完成以下工作:(1) 以这 n个整数生成(建立)一棵用链式存储结构存储的二叉排序树;(2) 按递增顺序输出该二叉排序树中的整数(关键字);(3) 输入一个整数 key,对该二叉排序树进行查找,若在该二叉排序树中
14、存在这个整数 key,则输出 find,否则输出 not find。(4) 输入一个整数 key,若该二叉排序树中不存在这个整数 key,则将 key插入到该二叉排序树中,使插入后仍为原性质的二叉排序树;否则不必插入;(5) 在(4)的基础上,按递减顺序输出该二叉排序树中的整数(关键字)。实验四 最小生成树1实验目的:非线性结构图的存储,对图的相关搜索方法、技术和算法的训练,图知识和技能应用的设计训练。2实验内容:给定一个地区的 n个城市间的距离网,用 Prim算法生成最小生成树,并计算得到的最小生成树的代价。要求显示得到的最小生成树中包括了哪些城市间的道路,并显示得到的最小生成树的代价。表示
15、城市间距离网要求至少 6个城市,8 条边。3实验基本要求:从键盘输入 n个顶点和 m条边(6n15,n-1m20),建立图的邻接矩阵存储结构,然后输出该邻接矩阵,用 Prim算法求出其最小生成树,输出最小生成树中的城市、城市间的道路及距离和最小生成树的代价。自主学习:明确串的概念和串的抽象数据类型定义,基本掌握串的基本算法,学会串的初步应用;基本掌握二叉树的非递归遍历算法;基本掌握求解关键路径的方法,掌握求最短路径的Floyd算法;基本掌握线性探测法和链地址法解决冲突构造哈希表的算法实现;明确平衡二叉树的概念,基本掌握平衡二叉树构建方法;掌握冒泡排序和选择排序的方法和算法,掌握其时间复杂度和空
16、间复杂度的分析;基本掌握快速、堆、归并排序算法实现。四、学时分配总学时 96 学时,其中理论 64 学时,实践 32 学时.自主学习 24 学时。学时分配如下:教学内容 理论学时 实践学时 合计基本概念 4 3线性结构 16 16 30树结构 14 4 16图结构 14 8 20查找 8 4 11排序 8 8合计 64 32 96序号 实验名称 学时 实验要求 实验类型1 大整数加法 8 必修 验证2 栈序列匹配 8 必修 验证3 二叉排序树 8 必修 验证4 最小生成树 8 必修 验证建议的自主学习内容 建议学习时间 串的概念、基本操作的算法实现 2二叉树的非递归遍历算法 4求关键路径的方法
17、,求最短路径的 Floyd 算法 6线性探测法和链地址法解决冲突构造哈希表的算法实现,平衡二叉树 6冒泡和选择排序的方法和算法、时间复杂度和空间复杂度的分析,快速、堆、归并排序算法实现6合计 24五、学业评价和课程考核1书面作业不少于 6 次;2纸质期中考试 1次(根据部门安排);3纸质实验报告 3次(3 个实验报告);4通过在线判题系统递交不少于 15题。5纸质期末考试 1次。考核方式:一纸开卷笔试。成绩构成:有期中考核:平时成绩(含实验)30%+期中考核成绩15%+期末考核成绩55%无期中考核:平时成绩(含实验)40%+期末考核成绩60%六、教学反馈1书面作业批改后反馈不少于 6 次;2纸
18、质期中考试批改后反馈 1次(根据部门安排);3针对在线练习情况反馈不少于 3 次;4实验过程中学生提问而进行的对话指导式的反馈(动态)。七、教材与参考书教 材:严蔚敏,李冬梅,吴伟民.数据结构(C 语言版).北京:人民邮电出版社,2011参考书:1 严蔚敏,吴伟民编著.数据结构 (C 语言版) .北京:清华大学出版社,20092 严蔚敏,吴伟民,米宁编著.数据结构题集.北京:清华大学出版社,19993 陈越,何钦铭,等编著.数据结构.北京:高等教育出版社,20124 李春葆编著.数据结构(C 语言篇)习题与解析(修订版).北京:清华大学出版社,20025 殷人昆编著.数据结构(C 语言描述).北京:清华大学出版社,2012八、说明实践时间课内外学时比至少为 1:2。执笔人:黄龙军 学科主任:唐开山 教学院长: 院长:沈红卫