《数据结构》课程大纲.docx
《《数据结构》课程大纲.docx》由会员分享,可在线阅读,更多相关《《数据结构》课程大纲.docx(17页珍藏版)》请在冰豆网上搜索。
《数据结构》课程大纲
《数据结构》课程教学大纲
本课程教学大纲依据网工专业2015级人才培养方案制定。
一、课程说明
课程名称:
数据结构课程编号:
1261D03
总学时:
80学时总学分:
5.5学分
学时分配:
理论56学时,上机24学时
课程性质:
专业必修课
先修课程:
C语言程序设计适用专业:
网工
开课学期:
第二学期
二、教学目标与要求
教学目标:
通过本课程教学,使学生了解计算机科学各领域的数据结构知识,及有关的应用软件所要用到的各种数据结构知识,理解常用的数据结构及内在的逻辑关系,掌握计算机软件设计中的算法知识,熟悉软件设计和编程技能,旨在培养初步对不同的存储结构和相应算法的对比,有一定的算法改进能力,并为学生日后从事软件开发和程序员奠定基础。
同时,作为编译程序、操作系统、数据库系统课程学习的理论基础,也为学生后续课程的顺利学习提供条件。
教学要求:
通过本课程的学习,在基础方面,要求学生能够掌握常用数据结构的基本概念及其不同的实现方法;在技能方面,通过系统学习能够在不同存储结构上实现不同的运算,并对算法设计的方式和技巧有所体会。
总言之,使应用者较全面的掌握各种常用的数据结构,提高运用数据结构解决实际问题的能力。
学习本课程必须具备高级语言程序设计(如C语言)的基础知识与基本技能。
它的后续课程为操作系统、数据库原理等。
数据结构中存储结构及基本运算的实现需要程序设计的基本知识和编程的经验及能力,本课程的大部分实例均是用C语言实现的,故要求较熟练地掌握C语言。
通过本课程的学习,使学生深透地理解数据结构的逻辑结构和物理结构的基本概念以及有关算法,培养基本的、良好的程序设计技能,编制高效可靠的程序,为学习操作系统、编译原理和数据库等课程奠定基础。
教学重点:
1.掌握数据结构的概念及术语。
2.掌握线性表(栈、队列)的存储结构(顺序和链式存储)、算法描述及应用。
3.掌握数组的顺序存储和特殊矩阵的压缩存储。
4.掌握树的基本概念和术语,掌握二叉树的基本性质和特点、存储结构及算法描述、二叉树的遍历、树、森林与二叉树的转换。
掌握最优二叉树(哈夫曼树)的特点及应用。
5.掌握图的基本概念和术语、存储结构(邻接矩阵、邻接表、十字链表、邻接多重表)、图的遍历、图的连通性(最小生成树)。
6.掌握查找的基本概念、基于线性表的查找方法(顺序、折半)。
7.掌握插入类排序(直接、折半、表、希尔等插入排序)、交换类排序(冒泡、快速排序)。
教学难点:
1.掌握算法时间复杂度。
2.掌握线性表的顺序和链式存储存储结构、算法描述及应用。
3.掌握数组的顺序存储和特殊矩阵的压缩存储。
4.掌握二叉树的基本性质和特点、存储结构及算法描述、二叉树的遍历、树、森林与二叉树的转换。
掌握最优二叉树(哈夫曼树)的特点及应用。
5.掌握图的邻接矩阵、邻接表、十字链表、邻接多重表的存储结构、图的遍历、图的连通性(最小生成树)。
7.掌握哈希表的构造、查找方法(顺序、折半、快速)。
3、教学内容与目的
(一)绪论
1、什么是数据结构
2、基本概念和术语
3、抽象数据类型的表示与实现
4、算法和算法分析
教学目的:
介绍数据结构课程的研究对象,基本术语,掌握算法的要领,描述算法的类语言。
了解数据结构的发展概况及其在计算机中的地位。
教学重点:
1、熟悉各名词、术语的含义,特别是数据的逻辑结构和存储结构之间的关系。
分清哪些是逻辑结构的性质,哪些是存储结构的性质;
2、了解抽象数据类型的定义、表示和实现方法;
3、理解算法五个要素的确切含义:
?
动态有穷性(能执行结束);?
确定性(对于相同的输入执行相同的路径);?
有输入;?
有输出;?
可行性(用以描述算法的操作都是足够基本的);
4、掌握计算语句频度和估算算法时间复杂度的方法。
教学难点:
1、掌握数据结构的意义及数据结构的基本内容;
2、掌握数据结构及数据、数据元素等相关概念;
3、掌握算法描述的方法;
4、算法时间复杂度的计算。
教学方法与手段:
讲授式、讨论式、案例教学
作业形式:
作业,辅导答疑
(二)线性表
1、线性表的类型定义
2、线性表的顺序表示和实现
3、线性表的链式表示和实现
4、一元多项式的表示及相加
教学目的:
掌握线性表的逻辑结构、顺序存储结构和链式存储结构。
掌握在线性表上实现基本运算的算法。
教学重点:
1、线性表的定义及逻辑上的特点;
2、顺序表上插入、删除和定位运算的实现;
3、单链表的结构特点及类型说明;
4、头指针和头结点的作用及区别;指针操作;
5、定位、删除、插入运算在单链表上的实现;
6、循环链表、双链表的结构特点;及其删除与插入运算的实现。
教学难点:
1、线性表与线性结构的联系与区别;
2、线性表的顺序存储结构及其运算;
3、头结点在链表中的作用和指针的操作;
4、单链表存储结构定义,删除、插入运算中的指针操作顺序;
5、单链表的基本运算的实现;
6、循环链表、双链表上指针的操作顺序及其相关运算。
教学方法与手段:
讲授式、讨论式、案例教学
作业形式:
作业,辅导答疑
(三)栈和队列
1、栈的类型定义
2、栈的应用举例
3、栈与递归的实现
4、队列的类型定义
教学目的:
掌握栈和队列的逻辑结构定义,掌握在两种存储结构上如何实现栈和队列的基本运算,掌握栈在程序设计中的应用。
教学重点:
1、栈的定义及逻辑特点;栈上的基本运算;
2、栈的顺序存储结构及运算实现;链式存储结构;
3、入栈、出栈等运算在链栈上的实现;
4、队列的定义及逻辑特点;队列上的基本运算;
5、队列的顺序存储结构及其上的运算实现;
6、队列的链式存储结构;
7、入队、出队等运算在链队列上的实现。
教学难点:
1、顺序栈基本运算的实现;
2、顺序栈的溢出判断条件;
3、栈的应用;
4、循环队列的队空、队满判断条件;循环队列上的插入、删除操作。
教学方法与手段:
讲授式、讨论式、案例教学
作业形式:
作业,辅导答疑
(四)串
1、串类型的定义
2、串的表示和实现
3、串的模式匹配算法
4、串操作应用举例
教学目的:
掌握字符串的存储结构,以及字符串的操作算法。
教学重点:
1、熟悉串的定义及串的基本操作;
2、串的两种存储方式;
3、字符串的运算;
4、串的模式匹配算法。
教学难点:
1、串的基本运算的综合应用;
2、串的模式匹配算法。
教学方法与手段:
讲授式、讨论式、案例教学
作业形式:
作业,辅导答疑
(五)数组和广义表
1、数组的定义
2、数组的顺序表示和实现
3、矩阵的压缩存储
4、广义表的定义和存储结构
5、广义表的递归算法
教学目的:
掌握数组的顺序存储和特殊矩阵的压缩存储。
了解广义表的应用。
教学重点:
1、多维组的逻辑结构,两种顺序存储方式;
2、计算给定元素在存储区中的地址;
3、对称矩阵、三角矩阵的压缩存储方式;
4、计算给定元素在存储区中的地址;
5、稀疏矩阵的三元组表表示方法;
6、了解广义表的定义、表示及存储。
教学难点:
1、了解数组的两种存储表示方法,并掌握数组在以行为主的存储结构中的地址计算方法;
2、稀疏矩阵的压缩存储表示下的运算的实现;
3、了解稀疏矩阵的三类压缩存储方法的特点和适用范围,领会以三元组表示稀疏矩阵时进行矩阵运算采用的处理方法;
4、了解广义表的结构特点及其存储表示方法。
教学方法与手段:
讲授式、讨论式、案例教学
作业形式:
作业,辅导答疑
(六)树和二叉树
1、树的定义和基本术语
2、二叉树
3、遍历二叉树和线索二叉树
4、树和森林
5、回溯法与树的遍历
6、赫夫曼树及其应用
教学目的:
掌握树的基本概念和术语,掌握二叉树的基本性质和特点、存储结构及算法描述、二叉树的遍历、树、森林与二叉树的转换。
掌握最优二叉树(哈夫曼树)的特点及应用。
教学重点:
1、二叉树的定义、性质、逻辑特点及五种基本形态、基本运算;
2、二叉树的链式存储结构、顺序存储结构及其类型说明;
3、二叉树链式存储结构的组织方式;
4、二叉树的三种遍历方法及其算法,以遍历为基础在二叉树上实现的几种运算;
5、哈夫曼树和哈夫曼算法;森林与二叉树的转换。
教学难点:
1、二叉树的递归定义;
2、二叉树链式存储结构的组织方式;
3、三种遍历的主要区别;二叉树上的复杂运算
4、森林与二叉树的转换;
5、哈夫曼算法及其应用。
教学方法与手段:
讲授式、讨论式、案例教学
作业形式:
作业,辅导答疑
(七)图
1、图的定义和术语
2、图的存储结构
3、图的遍历
4、图的连通性问题
5、有向无环图及其应用
6、最短路径
教学目的:
掌握图的基本概念和术语、存储结构(邻接矩阵、邻接表、十字链表、邻接多重表)、图的遍历、图的连通性(最小生成树)。
理解拓扑排序及关键路径和最短路径的应用及意义。
教学重点:
1、理解图的定义、术语及其含义,各种图的邻接矩阵表示法及其类型说明;
2、理解并掌握图的按深度优先搜索遍历方法和按广度优先搜索遍历方法;
3、领会生成树和最小生成树的概念;
4、掌握由Prim算法思想构造最小生成树按Prim算法思想;
5、掌握拓扑序列和拓扑排序的概念,拓扑排序、关键路径、最短路径的算法思想。
教学难点:
1、正确理解与区别图的常用术语;
2、区别图的两种存储结构的不同点及其应用场合;
3、关键路径的算法思想;最短路径的算法思想。
教学方法与手段:
讲授式、讨论式、案例教学
作业形式:
作业,辅导答疑
(八)查找
1、静态查找表
2、动态查找表
3、哈希表
教学目的:
掌握查找的基本概念、基于线性表的查找方法(顺序、折半)。
理解基于树的查找方法(二叉排序树、平衡二排序叉树)。
教学重点:
1、查找表的基本概念及查找原理;顺序存储结构、顺序表及其类型说明;
2、查找运算在查找表和有序表上的实现;
3、二叉排序树的定义、性质及各结点间的键值关系,查找算法和基本思想;
4、平衡二叉排序树的概念;B-树和B+树的概念;
5、散列表及散列存储和散列查找的基本思想;各种散列表的组织、解决冲突的方法;
教学难点:
1、理解查找表的逻辑结构是集合,它的运算以查找为核心;
2、二叉排序树上的插入算法;平衡二叉树的旋转平衡算法;
3、散列表上的有关算法。
教学方法与手段:
讲授式、讨论式、案例教学
作业形式:
作业,辅导答疑
(九)内部排序
1、插入排序
2、快速排序
3、选择排序
4、归并排序
5、基数排序
6、各种内部排序方法的比较讨论
教学目的:
掌握插入类排序(直接、折半、表、希尔等插入排序)、交换类排序(冒泡、快速排序)。
理解选择类排序、归并类排序和基数类排序。
教学重点:
1、排序基本概念及内排序和外排序、稳定排序和非稳定排序的区别;
2、插入排序、冒泡排序、快速排序、直接选择排序、堆排序的基本思想、基本步骤和算法;
3、归并排序的思想;两个有序文件合并的方法和算法;
4、二路归并排序的算法和时空性能;
教学难点:
1、快速排序算法;
2、堆排序方法。
教学方法与手段:
讲授式、讨论式、案例教学
作业形式:
作业,辅导答疑
章节学时分配表
章
节
学时分配
理论
实践
(一)绪论
1、什么是数据结构
2、基本概念和术语
3、抽象数据类型的表示与实现
4、算法和算法分析
2
2
(二)线性表
1、线性表的类型定义
2、线性表的顺序表示和实现
3、线性表的链式表示和实现
4、一元多项式的表示及相加
8
6
(三)栈和队列
1、栈的类型定义
2、栈的应用举例
3、栈与递归的实现
4、队列
6
4
(四)串
1、串类型的定义
2、串的表示和实现
3、串的模式匹配算法
4、串操作应用举例
2
(五)数组和广义表
1、数组的定义
2、数组的顺序表示和实现
3、矩阵的压缩存储
4、广义表的定义和存储结构
5、广义表的递归算法
4
(六)树和二叉树
1、树的定义和基本术语
2、二叉树
3、遍历二叉树和线索二叉树
4、树和森林
5、回溯法与树的遍历
6、赫夫曼树及其应用
10
4
(七)图
1、图的定义和术语
2、图的存储结构
3、图的遍历
4、图的连通性问题
5、有向无环图及其应用
6、最短路径
10
4
(八)查找
1、静态查找表
2、动态查找表
3、哈希表
6
2
(九)内部排序
1、插入排序
2、快速排序
3、选择排序
4、归并排序
5、基数排序
6、各种内部排序方法的比较讨论
8
2
合计
80
四、教学方法与手段
1、理论部分以讲授法为主,结合讨论及课堂练习实现教学目的。
2、传统教学手段与多媒体等现化手段相结合。
3、重视实验教学,要求学生利用一切可利用的时间和机会去实验室,实现并验证书本上的各种算法,达到真正实现教学目的。
五、考核与成绩评定方式
本课程为考试科目,课程结束后采用闭卷考试。
考核总成绩中,平时成绩占30%(出勤占20%,学习态度占10%),期末考试占70%;考核范围为本大纲规定的基本要求教学内容。
六、教材与主要参考书目
(一)教材
严蔚敏、吴伟民,数据结构(C语言版)(ISBN:
9787302023685),清华大学出版社,2009.4
(二)主要参考书目
严蔚敏、李冬梅、吴伟民,《数据结构》(C语言版)(ISBN:
9787115234902),人民邮电出版社,2011.2
苏仕华、魏韦巍、王敬生、刘燕君,数据结构课程设计(ISBN:
9787111295495),机械工业出版社,2010.3
七、实践教学环节大纲
(一)上机实验(1261ZA3)
上机学时:
24学时
上机项目数:
9
上机学分:
1学分
上机操作项目内容、能力标准和学时分配:
章节
项目名称
上机
类型
主要内容
应达到的基本要求或能力标准
课时
实验一
一元二次方程求解
验证
复习函数定义,函数调用和参数传递及相关知识。
熟练掌握
2
实验二
顺序表的操作
验证、操作
建立顺序表,并完成查找、插入、删除操作。
熟练掌握
2
实验三
单链表的操作
验证、操作
实现一个简单的学生表或图书表,能够进行简单的录入、查询、修改、删除。
熟练掌握
4
实验四
栈的应用
验证、操作
利用栈完成括号匹配
熟练掌握
2
实验五
队列的应用
验证、操作
利用队列模拟病人看病
熟练掌握
2
实验六
二叉树的遍历及应用
验证、操作
利用二叉链表方法建立二叉树,实现二叉树的前、中、后序三种遍历算法。
并运用遍历算法实现二叉树的其他操作,如计算二叉树结点个数、叶子结点个数、二叉树的高度等。
熟练掌握
4
实验七
图的遍历
验证、操作
利用邻接矩阵、邻接表建立图并实现深度优先遍历和广度优先遍历算法。
熟练掌握
4
实验八
查找算法设计与实现
验证、操作
选择两种查找算法实现查找并比较。
熟练掌握
2
实验九
排序算法设计与实现
验证、操作
选择两种排序算法实现排序并比较。
熟练掌握
2
(二)课程设计(1261ZB1)
1.课程设计学时:
1周(不占课内学时)
2.课程设计学分:
1学分
3.课程设计选题要求:
选题要符合本课程的教学要求,通常应包含如下大部分知识点的综合设计:
(1)顺序表的建立、查找、删除、修改等基本操作;
(2)单链表的建立、查找、删除、修改等基本操作;
(3)栈的建立、查找、删除、修改等基本操作;
(4)二叉树的建立、遍历等操作;
(5)哈夫曼树与哈夫曼码;
(6)图的遍历;
(7)最小生成树;
(8)哈希查找;
(9)各种排序算法的比较
注意选题内容得先进性、综合性、实践性,应适合实践教学和启发创新,应结合工程实际情况进行选题,并且有一定的实用价值。
4.课程设计基本任务:
(1)根据实现的功能,分析出合理的解决问题的方法;
(2)能编写简练、功能齐全的程序,并能正确运行;
(3)学会写规范的说明书、算法描述、流程图;
(4)撰写格式规范、内容详实的课程设计报告,提交程序文件;
(5)提高综合运用所学知识独立分析和解决问题的能力。
5.课程设计流程
(1)选定设计课题,下达设计任务
选题可由指导教师选定,或由指导教师提供若干选题供学生选择,也可由学生自己选题,但学生选题必须通过指导教师的批准。
指导教师在公布课程设计课题时一般应包括以下内容:
课题名称、设计任务、技术指标和要求、参考文献等内容。
(2)教师讲解
介绍课程设计的内容以及课程设计的要求、安排、考核方法、注意事项等。
讲授必要的课题背景和相关知识、原理,帮助学生明确任务,组织学生分组并讨论课程设计的任务。
(3)学生查询资料,并设计
学生设计内容包括:
课题名称及要求、设计方案(给出功能模块设计、流程图等内容)、同组同学的分工任务等。
(4)教师审查
审查功能模块设计是否正确,流程图等是否合理。
(5)学生编程与调试
通过教师审查后,学生开始做详细设计包括:
程序中所采用的数据结构及存储结构的说明、算法的设计思想、以及具体功能实现即开始编程。
对编写好的程序进行调试和测试,并积极解决遇到的问题。
(6)提倡团队合作精神
课程设计任务由同组同学分工合作完成,所以大家要求步调一致、协作完成。
(7)实践性环节考核
对本组设计编写的程序文件进行考核,教师对其综合应用能力和实验能力进行简单的答辩与功能检查,然后再综合实验结果给出实际操作评定成绩。
(8)撰写课程设计报告
课程设计报告应认真书写,内容要规范、正确(课程设计报告格式和内容参见附录)。
6.课程设计进程安排
序号
内容
时间(天)
1
教师讲解
0.5
2
选定课题,学生分组,了解并讨论设计任务
0.5
3
学生查询资料并设计方案
1
4
学生编程
2
5
调试与测试
1
6
实践性环节考试
1
7
撰写课程设计报告
1
合计
6-7
7.课程设计考核方法及成绩评定
(1)数据结构课程设计报告的综合成绩约占40%
(2)实际动手能力约占40%
(3)创新能力约占10%
(4)态度和纪律约占10%
成绩按照优秀、良好、中等、及格和不及格五档。
8.课程设计主要参考书:
苏仕华、魏韦巍、王敬生、刘燕君.数据结构课程设计[M]北京:
机械工业出版社,2010.
执笔人:
刘波
教研室审核签名:
院系审核签名:
信息工程学院网工教研室
编制日期:
2016年1月