数据结构大纲修改.docx
《数据结构大纲修改.docx》由会员分享,可在线阅读,更多相关《数据结构大纲修改.docx(21页珍藏版)》请在冰豆网上搜索。
数据结构大纲修改
《数据结构》
(DataStructures)
课程基本信息
课程编号:
06021002
课程总学时:
48
实验学时:
8
课程性质:
非独立设课
课程属性:
专业基础课
开设学期:
第4学期
适用专业:
计算机相关专业
先修课程:
离散数学、C语言程序设计
主撰人:
惠向晖
审核人:
丁立
大纲制定(修订)日期:
2012.5
一、课程的性质、地位和任务
该课是计算机专业一门重要的专业技术基础课程,是计算机专业的一门核心的关键性课程。
本课程较系统地介绍了软件设计中常用的数据结构以及相应的存储结构和实现算法,介绍了常用的多种查找和排序技术,并做了性能分析和比较,内容非常丰富。
本课程的学习将为后续课程的学习以及软件设计水平的提高打下良好的基础。
本课程的任务是:
在基础方面,要求学生掌握常用数据结构的基本概念及其不同的实现方法;在技能方面,通过系统学习能够在不同存储结构上实现不同的运算,并对算法设计的方式和技巧有所体会。
二、课程教学的基本要求
1、理论知识方面:
要求学生掌握常用数据结构的基本概念及其不同的实现方法
2、实验技能方面:
通过系统学习能够在不同存储结构上实现不同的运算,并对算法设计的方式和技巧有所体会。
三、理论教学内容及学时分配(40学时)
第一章 概论 学时数:
4
教学目的:
本章的目的是介绍数据结构中常用的基本概念和术语以及学习数据结构的意义,要求了解本章介绍的各种基本概念和术语,掌握算法描述和分析的方法。
教学重点和难点:
⑴数据、数据元素、数据项;
⑵逻辑结构和数据结构在概念上的联系与区别;
⑶运算的概念;
⑷存储结构及其三个组成部分;
⑸抽象数据类型和数据抽象;
⑹评价算法优劣的标准及方法。
主要教学内容及要求:
⑴了解数据、数据元素和数据项的概念及其相互间的关系;
⑵理解数据结构的逻辑结构、存储结构的联系与区别,以及在数据结构上施加的运算及其实现;
⑶理解抽象数据类型的概念;
⑷掌握进行简单算法分析的方法。
第二章 线性表 学时数:
8
教学目的:
本章目的是介绍线性表的逻辑结构和各种存储表示方法,以及定义在逻辑结构上的各种基本运算及其在存储结构上如何实现这些基本运算。
要求在熟悉这些内容的基础上,能够针对具体应用问题的要求和性质,选择合适的存储结构设计出相应的有效算法,解决与线性表相关的实际问题。
教学重点和难点:
⑴线性表的定义及逻辑上的特点;
⑵顺序表上插入、删除和定位运算的实现;
⑶单链表的结构特点及类型说明;
⑷头指针和头结点的作用及区别;
⑸指针操作;
⑹定位、删除、插入运算在单链表上的实现;
⑺循环链表、双链表的结构特点;
⑻循环链表、双链表上删除与插入运算的实现。
主要教学内容及要求:
⑴理解线性表的定义及其运算;
⑵理解顺序表和链表的定义、组织形式、结构特征和类型说明;
⑶掌握在这两种表上实现的插入、删除和按值查找的算法;
⑷了解循环链表、双(循环)链表的结构特点和在其上施加的插入、删除等操作。
第三章 栈和队列 学时数:
6
教学目的:
本章目的是介绍栈和队列的逻辑结构定义及在两种存储结构上如何实现栈和队列的基本运算。
要求在掌握栈和队列的特点的基础上,知道在什么样的情况下能够使用栈或队列。
教学重点和难点:
⑴栈的定义及逻辑特点;
⑵栈上的基本运算;
⑶栈的顺序存储结构及运算实现;
⑷栈的链式存储结构;
⑸入栈、出栈等运算在链栈上的实现;
⑹队列的定义及逻辑特点;
⑺队列上的基本运算;
⑻队列的顺序存储结构及其上的运算实现;
⑼队列的链式存储结构;
⑽入队、出队等运算在链队列上的实现。
主要教学内容及要求:
⑴理解栈的定义、特征及在其上所定义的基本运算;
⑵掌握在两种存储结构上对栈所施加的基本运算的实现;
⑶理解队列的定义、特征及在其上所定义的基本运算;
⑷掌握在两种存储结构上对队列所施加的基本运算的实现。
第四章 串 学时数:
4
教学目的:
本章目的是介绍串的逻辑结构、存储结构及其串上的基本运算。
教学重点和难点:
⑴串的基本概念、基本运算;
⑵串的两种存储方式;
⑶串的模式匹配算法。
主要教学内容及要求:
⑴了解串的定义;
⑵理解和领会串的存储方式;
⑶掌握常用的串运算。
第五章 数组、特殊矩阵和广义表 学时数:
4
教学目的:
本章目的是介绍多维数组的逻辑结构特征及其存储方式,特殊矩阵和稀疏矩阵的压缩存储方法及广义表的概念,要求学生熟悉这些内容。
教学重点和难点:
⑴多维数组的逻辑结构;
⑵多维数组的两种顺序存储方式;
⑶计算给定元素在存储区中的地址;
⑷对称矩阵、三角矩阵的压缩存储方式;
⑸计算给定元素在存储区中的地址;
⑹稀疏矩阵的三元组表表示方法。
主要教学内容及要求:
⑴理解多维数组的结构特点和在内存中的两种顺序存储方式;
⑵理解并掌握矩阵和特殊矩阵元素在存储区中地址的计算;
⑶掌握稀疏矩阵的压缩方式和简单运算;
⑷了解广义表的定义和基本运算。
第六章 树和二叉树 学时数:
12
教学目的:
本章目的是介绍二叉树的定义、性质、存储结构、遍历、线索化,树的定义、存储结构、遍历、树和森林与二叉树的转换,哈夫曼树及哈夫曼编码等内容。
教学重点和难点:
⑴二叉树的定义、逻辑特点及五种基本形态;
⑵二叉树的五个性质;
⑶在二叉树上定义的基本运算;
⑷二叉树的链式存储结构及其类型说明;
⑸二叉树的顺序存储结构及其类型说明;
⑹二叉树链式存储结构的组织方式;
⑺二叉树的三种遍历方法及其算法;
⑻以遍历为基础在二叉树上实现的几种运算;
⑼哈夫曼树和哈夫曼算法。
主要教学内容及要求:
⑴深刻理解二叉树和树的定义、性质及其存储方法;
⑵熟练掌握二叉树的二叉链表存储方式、结点结构和类型定义;
⑶理解并掌握二叉树的三种遍历算法;
⑷掌握二叉树的线索化方法;
⑸熟练掌握二叉树的遍历方法解决相关的应用问题。
⑹熟练掌握森林与二叉树间的相互转换;
⑺理解树和森林的遍历;
⑻了解树的简单应用。
第七章 图 学时数:
8
教学目的:
本章目的是介绍图的基本概念、两种常用的存储结构、两种遍历算法以及图的应用算法。
教学重点和难点:
⑴图的定义、术语及其含义;
⑵各种图的邻接矩阵表示法及其类型说明;
⑶图的按深度优先搜索遍历方法和按广度优先搜索遍历方法;
⑷生成树和最小生成树的概念;
⑸由Prim算法思想构造最小生成树按Prim算法思想;
⑹拓扑序列和拓扑排序的概念;
⑺拓扑排序的算法思想;
⑻关键路径的算法思想;
⑼最短路径的算法思想。
主要教学内容及要求:
⑴理解图的基本概念及术语;
⑵掌握图的两种存储结构(邻接矩阵和邻接表)的表示方法;
⑶熟练掌握图的两种遍历(深度优先搜索遍历和广度优先搜索遍历)的算法思想、步骤,并能列出在两种存储结构上按上述两种遍历算法得到的序列;
⑷理解最小生成树的概念,能按Prim算法构造最小生成树;
⑸理解并掌握拓扑排序、关键路径、最短路径的算法思想。
第八章 查找 学时数:
8
教学目的:
本章目的是介绍线性表、树和散列表的查找方法、算法实现以及各种查找方法的时间性能(平均查找长度)分析。
教学重点和难点:
⑴查找表的基本概念及查找原理;
⑵查找表的顺序存储结构、顺序表及其类型说明;
⑶查找运算在查找表和有序表上的实现;
⑷二叉排序树的定义、性质及各结点间的键值关系;
⑸二叉排序树的查找算法和基本思想;
⑹平衡二叉排序树的概念;
⑺散列表及散列存储和散列查找的基本思想;
⑻各种散列表的组织、解决冲突的方法;
⑼在散列表上实现查找、插入和删除运算的算法。
主要教学内容及要求:
⑴了解查找的基本思想及查找成功和不成功的概念;
⑵掌握在顺序表、有序表、索引表、散列表等上的查找方法和算法,并能求出相应的平均查找长度;
⑶理解并掌握二叉排序树、平衡二叉树的各种算法。
第九章 排序 学时数:
6
教学目的:
本章目的是介绍五类内部排序方法的基本思想、排序过程、算法实现、时间和空间性能的分析以及各种排序方法的比较和选择。
教学重点和难点:
⑴排序基本概念及内排序和外排序、稳定排序和非稳定排序的区别;
⑵插入排序的基本思想、基本步骤和算法;
⑶冒泡排序的基本思想、基本步骤、算法和算法分析;
⑷快速排序的基本思想、基本步骤和算法;
⑸直接选择排序的基本思想、基本步骤、算法和算法分析;
⑹堆排序的基本思想、基本步骤和算法;
⑺归并排序的思想;
⑻两个有序文件合并的方法和算法;
⑼二路归并排序的算法和时空性能。
主要教学内容及要求:
⑴理解排序的基本思想和基本概念;
⑵理解并掌握插入排序、冒泡排序、快速排序、直接选择排序、堆排序、归并排序和基数排序的基本思想、步骤、算法及时空效率分析;
⑶了解外排序的定义和基本方法。
四、实验教学内容及学时分配 (8学时)
序号
实验名称
学时
类型
实验要求
060210021
线性表
2
综合性
必做
060210022
栈、队列与递归算法设计
2
基础性
必做
060210023
树、图及其应用
2
综合性
必做
060210024
查找和排序
2
综合性
必做
五、考试方法
考试方式为闭卷、笔试。
总成绩计算时办法:
平时成绩占20-30%,期末考试成绩占70-80%
六、使用教材
1、选用教材:
(1)理论课教材:
数据结构,严蔚敏吴伟民编著,清华大学出版社,2010
(2)实验课教材:
数据结构习题解答与实验指导,罗文劼王苗石强编著,中国铁道出版社,2008
2、参考书:
(1)数据结构.刘振鹏、张晓莉、郝杰.北京:
中国铁道出版社,2005
(2)数据结构.黄刘生唐策善著.中国科学技术大学出版社,2009
(3)数据结构.刘大有著.高等教育出版社,2002
(4)数据结构(面向对象语言描述).朱振元等著.清华大学出版社,2004
(5)数据结构(C语言版)实践教程.胡元义等著.西安电子科技大学出版社,2008
(6)数据结构—C语言描述.耿国华等.西安:
西安电子科技大学出版社.2002
3、推荐网站:
(1)河南农业大学精品课程展示,http:
//202.196.80.251:
81/data/why/jpkczhanshi/
数据结构课程实验教学大纲
(DataStructuresCourseExperiment)
课程编号:
06021002
课程总学时:
8
课程性质:
非独立设课
课程属性:
专业基础课
开设学期:
第4学期
承担实验室:
软件实验室
适用专业:
计算机相关专业
先修课程:
离散数学、C语言程序设计
主撰人:
惠向晖
审核人:
丁立
大纲制定(修订)日期:
2012.5
(一)实验课程简介
“数据结构”是计算机专业一门重要的专业技术基础课程,是计算机专业的一门核心的关键性课程。
本课程较系统地介绍了软件设计中常用的数据结构以及相应的存储结构和实现算法,介绍了常用的多种查找和排序技术,并做了性能分析和比较,内容非常丰富。
本课程的学习将为后续课程的学习以及软件设计水平的提高打下良好的基础。
(二)实验教学目的和基本要求
不少学生在解答习题尤其是算法设计题时,觉得无从下手,做起来特别费劲。
实验中的内容和教科书的内容是密切相关的,解决题目要求所需的各种技术大多可从教科书中找到,只不过其出现的形式呈多样化,因此需要仔细体会,在反复实践的过程中才能掌握。
为了帮助学生更好地学习本课程,理解和掌握算法设计所需的技术,为整个专业学习打好基础,要求运用所学知识,上机解决一些典型问题,通过分析、设计、编码、调试等各环节的训练,使学生深刻理解、牢固掌握所用到的一些技术。
数据结构中稍微复杂一些的算法设计中可能同时要用到多种技术和方法,如算法设计的构思方法,动态链表,算法的编码,递归技术,与特定问题相关的技术等,要求重点掌握线性链表、二叉树和树、图结构、数组结构相关算法的设计。
在掌握基本算法的基础上,掌握分析、解决实际问题的能力。
(三)实验项目名称与学时分配
序号
实验名称
学时
类型
实验要求
060210021
停车场管理
2
基础性
必做
060210022
树基本操作
2
综合性
必做
060210023
图的基本操作
2
设计性
必做
060210024
常用排序算法的对比分析
2
综合性
必做
(四)实验方式及基本要求
上机操作,WindowsXP及以上版本,VC系统或Turboc2.0环境。
(五)考核方式及成绩评定
采用上机情况、程序质量、实习报告相结合的形式,满分为100分。
1.上机情况(30%):
包括出勤情况、调试表现、是否上网、玩游戏。
2.程序质量(50%)
3.实习报告(20%)
(六)教学参考书目
(1)数据结构.黄扬铭编著.科学出版社出版,2001
(2)DataStructureswithC++.WilliamFordetal.PrenticeHallInc,1996
(3)DataStructures&ProgramDesigninC.RobertKruseetal.2ndEd.PrenticeHall,1997
(4)数据结构(第二版).黄刘生唐策善编著.中国科学技术大学出版社,2000
(5)数据结构.刘大有编著.高等教育出版社,2002
(6)数据结构(面向对象语言描述).朱振元等编著.清华大学出版社,2004
(7)数据结构(C语言版)实践教程.胡元义等编著.西安电子科技大学出版社,2008
(七)实验内容安排
【实习一】线性表、栈、队列与递归算法设计
1.实验目的:
仅仅认识到栈和队列是两种特殊的线性表是远远不够的,本次实习的目的在于使读者深入了解栈和队列的特征,以便在实际问题背景下灵活运用它们;同时还将巩固这两种结构的构造方法,接触较复杂问题的递归算法设计。
2.实验内容:
停车场管理。
【实习二、三】树、图及其应用
1.实验目的:
树和图是两种应用极为广泛的数据结构,也是这门课程的重点。
它们的特点在于非线性。
广义表本质上是树结构;稀疏矩阵的十字链表存储结构也是图的一种存储结构,故也把它们归在这次实习中。
本章实习继续突出了数据结构加操作的程序设计观点,但根据这两种结构的非线性特点,将操作进一步集中在遍历操作上,因为遍历操作是其他众多操作的基础。
遍历逻辑的(或符号形式的)结构,访问动作可是任何操作。
本次实习还希望达到熟悉各种存储结构的特征,以及如何应用树和图结构解决具体问题(即原理与应用的结合)等目的。
2.实验内容:
图遍历的演示
【实习四】查找和排序
1.实验目的:
本次实习旨在集中对几个专门的问题作较为深入的探讨和理解,也不强调对某些特定的编程技术的训练。
2.实验内容:
哈希表设计;内部排序算法比较。
数据结构考试大纲
(DataStructures)
课程基本信息
课程编号:
06021002
课程学时:
48
课程学分:
3
主撰人:
惠向晖
审核人:
丁立
大纲制定(修订)日期2012.5
(一)、课程的性质和地位
数据结构是计算机科学技术专业考试计划中一门专业基础课,在计算机软件的各个领域中均会使用到数据结构的有关知识:
本课程的目的和任务是使学生较全面地掌握各种常用的数据结构,为学习后续软件课程提供必要的基础,提高运用数据结构解决实际问题的能力。
(二)、理论教学部分的考核目标
1.从数据结构的逻辑结构、存储结构和数据的运算三个方面去掌握线性表、栈、队列、串、数组、广义表、树、图等常用的数据结构。
2.掌握在各种常用的数据结构上实现的排序和查找运算。
3.对算法的时间和空间复杂性有—定的分析能力。
4.针对简单的应用问题,应能选择合适的数据结构及设计有效的算法解决之。
第一章概论
一、一般学习目的与要求
1.一般了解:
本章介绍的各种基本概念和术语以及学习数据结构的意义
2.一般掌握:
算法描述和分析的方法
3.熟练掌握:
数据结构的逻辑结构、存储结构及数据的运算三方面的概念及相互关系;算法复杂度的分析方法
二、考核知识点
1.1基本概念和术语
1.2学习数据结构的意义
1.3算法的描述和分析
三、考核要求
1、识记:
数据、数据元素、数据项、数据结构等基本概念;数据结构的逻辑结构、存储结构及数据运算的含义及其相互关系;数据结构的两大类逻辑结构和四种常用的存储表示方法;数据结构在各种软件系统中所起的作用;选择合适的数据结构是解决应用问题的关键步骤。
2、领会:
算法、算法的时间复杂度和空间复杂度、最坏的和平均的时间复杂度等概念;算法的时间复杂度不仅仅依赖于问题的规模,也取决于输入实例的初始状态;算法描述和算法分析的方法,对于一般算法能分析出时间复杂度。
第二章线性表
一、一般学习目的与要求
1.一般掌握:
线性表的逻辑结构和各种存储表示方法,以及定义在逻辑结构上的各种基本运算及其在存储结构上如何实现这些基本运算。
2.熟练掌握:
顺序表和单链表上实现的各种基本算法及相关的时间性能分析。
二、考核知识点
2.1线性表逻辑结构
2.2线性表的顺序存储及运算实现
2.3线性表的链式存储和实现
2.4顺序表和链表的比较
三、考核要求
1、识记:
线性表的逻辑结构特征;线性表上定义的基本运算,并能利用基本运算构造出较复杂的运算。
2、领会:
顺序表和链表的主要优缺点;针对线性表上所需要执行的主要操作,知道选择顺序表还是链表作为其存储结构才能取得较优的时空性能。
3、综合应用:
顺序表的含义及特点,即顺序表如何反映线性表中元素之间的逻辑关系;顺序表上的插入删除操作及其平均时间性能分析;利用顺序表设计算法解决简单的应用问题;链表如何表示线性表中元素之间的逻辑关系;链表中头指针和头结点的使用;单链表、双链表、循环链表链接方式上的区别;单链表上实现的建表、查找、插入和删除等基本算法,并分析其时间复杂度;循环链表上尾指针取代头指针的作用,以及单循环链表上的算法与单链表上相应算法的异同点;双链表的定义及其相关的算法;利用链表设计算法解决简单的应用问题。
第三章栈和队列
一、一般学习目的与要求
1.一般掌握:
栈和队列的逻辑结构定义及在两种存储结构上如何实现栈和队列的基本运算。
2.熟练掌握:
在掌握栈和队列的特点的基础上,知道在什么样的情况下能够使用栈或队列。
二、考核知识点
3.1栈
3.2队列
3.3栈和队列的应用
三、考核要求
1、领会:
栈和队列的特点,什么样的情况下能够使用栈或队列
2、综合应用:
栈的逻辑结构特点,栈与线性表的异同;顺序栈和链栈上实现的进栈、退栈等基本算法;栈的“上溢”和“下溢”的概念及其判别条件;利用栈设计算法解决简单的应用问题;队列的逻辑结构特点,队列与线性表的异同;顺序队列(主要是循环队列)和链队列上实现的入队、出队等基本算法;队列的“上溢”和“下溢”的概念及其判别条件;使用数组实现的循环队列取代普通的顺序队列的原因;循环队列中对边界条件的处理方法;利用队列设计算法解决简单的应用问题。
第四章串
一、一般学习目的与要求
1.一般掌握:
串的逻辑结构、存储结构及其串上的基本运算
2.熟练掌握:
串上实现的模式匹配算法
二、考核知识点
4.1串及其运算
4.2串的存储结构
三、考核要求
1、领会:
串的有关概念及基本运算;串与线性表的关系。
2、简单应用:
串的两种存储表示;串上实现的模式匹配算法及其时间性能分析;使用C语言提供的串操作函数构造与串相关的算法解决简单应用问题。
第五章数组和广义表
一、一般学习目的与要求
1.一般掌握:
多维数组的存储方式、矩阵的压缩存储方式、广义表的定义及其表头和表尾的运算
2.熟练掌握:
稀疏矩阵的压缩存储表示下实现的算法。
二、考核知识点
5.1多维数组
5.2矩阵的压缩存储
5.3广义表的概念
三、考核要求
1、领会:
多维数组的逻辑结构特征;多维数组的顺序存储结构及地址计算方式;数组是一种随机存取结构的原因;特殊矩阵和疏稀矩阵的概念;特殊矩阵和压缩存储时的下标变换方法;稀疏矩阵的三元组表表示方法及有关算法;广义表的有关概念及其与线性表的关系;广义表的括号表示和图形表示之间的转换;求给定的非空广义表的表头和表尾运算。
第六章树和二叉树
一、一般学习目的与要求
1.一般掌握:
二叉树的定义、性质、存储结构、遍历、线索化,树的定义、存储结构、遍历、树和森林与二叉树的转换,哈夫曼树及哈夫曼编码等内容。
2.熟练掌握:
二叉树的遍历算法及其有关应用
二、考核知识点
6.1树的概念
6.2二叉树
6.3二叉树的遍历
6.4线索二叉树
6.5树和森林
6.6哈夫曼树及其应用
三、考核要求
1、领会:
树的逻辑结构特征;树的不同表示方法;树的常用术语及含义;二叉树线索化的目的及实质;在中序线索树中查找给定结点的中序前趋和中序后继的方法;查找给定结点的前序前趋和后序后继并非有效的原因;树和森林与二叉树之间的转换方法;树的各种存储结构及其特点;树的两种遍历方法。
2、简单应用:
二叉树的递归定义及树与二叉树的差别;二叉树的性质,了解相应的证明方法;二叉树的两种存储方法、特点及适用范围;最优二叉树和最优前缀码的概念及特点;哈夫曼算法的思想;根据给定的叶结点及其权值构造出相应的最优二叉树;根据最优二叉树构造对应的哈夫曼编码。
3、综合应用:
二叉树的三种遍历算法,理解其执行过程;确定三种遍历所得到的相应的结点访问序列;以遍历算法为基础,设计有关算法解决简单的应用问题。
第七章图
一、一般学习目的与要求
1.一般掌握:
图的基本概念、两种常用的存储结构、两种遍历算法以及图的应用算法
2.熟练掌握:
在图的两种存储结构上实现的遍历算法;求最小生成树;求最短路径以及拓扑排序
二、考核知识点
7.1图的概念
7.2图的存储结构
7.3图的遍历
7.4生成树和最小生成树
7.5最短路径
7.6拓扑排序
三、考核要求
1、领会:
图的逻辑结构特征;图的常用术语及含义;生成树和最小生成树的概念;对遍历给定的图,画出深度优先和广度优先生成树或生成森林;Prim和Kruskal算法的基本思想、时间性能及这两种算法各自的特点;要求对给定的连通图,根据Prim和Kruskal算法构造出最小生成树;最短路径的含义;求单源最短路径的Dijkstra算法的基本思想和时间性能;对于给定的有向图,根据Dijkstra算法画出求单源最短路径的过程示意图;拓扑排序的基本思想和步骤;拓扑排序不成功的原因;对给定的有向