数据结构 HTH课程编号2305.docx

上传人:b****6 文档编号:4274011 上传时间:2022-11-28 格式:DOCX 页数:12 大小:21.44KB
下载 相关 举报
数据结构 HTH课程编号2305.docx_第1页
第1页 / 共12页
数据结构 HTH课程编号2305.docx_第2页
第2页 / 共12页
数据结构 HTH课程编号2305.docx_第3页
第3页 / 共12页
数据结构 HTH课程编号2305.docx_第4页
第4页 / 共12页
数据结构 HTH课程编号2305.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

数据结构 HTH课程编号2305.docx

《数据结构 HTH课程编号2305.docx》由会员分享,可在线阅读,更多相关《数据结构 HTH课程编号2305.docx(12页珍藏版)》请在冰豆网上搜索。

数据结构 HTH课程编号2305.docx

数据结构HTH课程编号2305

数据结构

课程编号:

22050305

类〓〓别:

夜大学

层〓〓次:

专科

授课学时:

50一、本课程的地位、作用和任务

《数据结构与算法》是计算机科学与技术各专业及其相关的一门专业基础课。

是计算机科学与技术各专业的课程体系中的核心课程之一。

是设计和实现编译程序、操作系统、数据库系统和其他系统软件和应用软件的重要基础。

通过本课程的学习,使学生较全面地掌握各种常用的数据结构,为学习后续软件课程提供必要的基础,提高运用数据结构解决实际问题的能力。

课程的内容重点立足于基础知识和基础理论的传授和应用能力的培养。

从数据结构的逻辑结构、存储结构和数据的运算三个方面掌握线性表、树、二元树、图和文件等常用的数据结构。

掌握在各种常用数据结构上实现的查找和排序算法。

对算法的时间和空间复杂性有一定的分析能力。

针对简单的应用问题,能够选择合适的数据结构设计有效的算法。

二、对先修课的要求(与相关课程的联系)

本课程的先修可称为离散数学和高级语言程序设计,后续可称为操作系统、数据库系统原理和编译原理等。

数据结构中的存储结构及基本运算的实现需要程序设计的基本知识和编程能力和经验,本课程大部分实例和实验均是用C语言实现的,故要求叫熟练地掌握C语言。

三、选用的教材及参考书

教材选用《数据结构与算法》,大连理工大学出版社,作者郭福顺、廖明宏等。

参考书为《数据结构(C语言版》,清华大学出版社出版,严蔚敏、吴伟民编著。

四、教学内容及课时分配

以线性表、树、二元树、图和文件等常用的数据结构的逻辑结构、存储结构和数据的运算以及各种常用数据结构上实现的查找和排序算法为主要内容,培养和训练对算法的复杂性的分析能力以及选择合适的数据结构对简单的应用问题进行有效算法的设计能力。

课时分配:

讲授50学时

绪论

教学要求:

要求掌握数据结构中常用的各种基本概念和术语,掌握算法描述和分析方法。

重点掌握数据结构的逻辑结构、存储结构及数据运算三方面的概念及相互关系,难点是算法复杂性的分析方法。

教学内容:

1.数据结构的基本概念和术语(识记)

1.1数据、数据元素、数据项、数据结构等基本概念。

1.2数据结构的逻辑结构、存储结构及数据运算的含义及其相互关系。

1.3数据结构的两大类逻辑结构和四种常用的存储表示方法。

2.数据结构在软件系统中的作用(识记)。

2.1数据结构在各种软件系统中所起作用。

2.2选择合适的数据结构是解决应用问题的关键步骤。

3.算法的描述和分析(领会)

3.1算法、算法的时间复杂度和空间复杂度、最坏的和平均的时间复杂度等概念。

3.2算法的时间复杂度不仅仅依赖于问题的规模,也取决于输入实例的初始状态。

3.3算法描述和算法分析的方法,对于一般算法能分析出时间复杂度。

学时要求:

4个学时

线性表

教学要求:

本章目的是介绍线性表的逻辑结构和各种存储表示方法,以及定义在逻辑结构上的各种基本运算及其在存储结构上如何实现这些基本运算。

要求在熟悉这些内容的基础上,能够针对具体应用问题的要求和性质,选择合适的存储结构设计出相应的有效算法,解决与线性表相关的实际问题。

本章重点是熟练掌握顺序表和单链表上实现的各种基本算法及相关的时间性能分析,难点是能够使用本章所学到的基本知识设计有效算法解决与线性表相关的应用问题。

教学内容

1.线性表的逻辑结构(识记)

1.1线性表的逻辑结构特征。

1.2线性表上定义的基本运算,并能利用基本运算构造出较复杂的运算。

2.线性表的顺序存储结构(综合应用)

2.1顺序表的含义及特点,即顺序表如何反映线性表中元素之间的逻辑关系。

2.2顺序表上的插入、删除操作及其平均时间性能分析。

2.3利用顺序表设计算法解决简单的应用问题。

3.线性表的链式存储结构(综合应用)

3.1链表如何表示线性表中元素之间的逻辑关系。

3.2链表中头指针和头结点的使用。

3.3单链表、双链表、循环链表链接方式上的区别。

3.4单链表上实现的建表、查找、插入和删除等基本算法,并分析其时间复杂度。

3.5单循环链表以及单循环链表上的算法与单链表上相应算法的异同点。

3.6双链表的定义及其相关的算法。

3.7利用链表设计算法解决简单的应用问题。

4.顺序表和链表的比较(领会)

4.1顺序表和链表的主要优缺点。

4.2针对线性表上所需要执行的主要操作,知道选择顺序表还是链表作为其存储结构才能取得较优的时空性能。

学时要求:

4个学时

栈和队列

教学要求:

本章目的是介绍栈和队列的逻辑结构定义及在两种存储结构上如何实现钱和队列的基本运算。

要求在掌握栈和队列的特点的基础上,懂得在什么样的情况下能够使用栈或队列。

本章重点是掌握栈和队列在两种存储结构上实现的基本运算,难点是循环队列中对边界条件的处理。

教学内容:

1.栈的逻辑结构、存储结构及其相关算法(综合应用)

1.1栈的逻辑结构特点,栈与线性表的异同。

1.2顺序栈和链钱上实现的进栈、退栈等基本算法。

1.3栈的“上溢”和“下溢”的概念及其判别条件。

1.4利用栈设计算法解决简单的应用问题。

2.队列的逻辑结构、存储结构及其相关算法(综合应用)

2.1队列的逻辑结构特点,队列与线性表的异同。

2.2顺序队列(主要是循环队列)和链队列上实现的人队、出队等基本算法。

2.3队列的“上溢”和“下溢”的概念及其判别条件。

2.4使用数组实现的循环队列取代普通的顺序队列的原因。

2.5循环队列中对边界条件的处理方法。

2.6利用队列设计算法解决简单的应用问题。

3.栈和队列的应用(领会)

栈和队列的特点,什么样的情况下能够使用栈或队列。

学时要求:

4个学时

教学要求:

本章目的是介绍串的逻辑结构、存储结构及其中上的基本运算,由于C语言及其它高级语言均已具备了较强的串处理功能,故本章重点是掌握串上实现的模式匹配算法,这也是本章的难点。

教学内容:

1.串及其运算(领会)

1.1串的有关概念及基本运算。

1.2串与线性表的关系。

2.串的存储结构(简单应用)

2.1串的两种存储表示。

2.2串上实现的模式匹配算法及其时间性能分析。

2.3使用C语言提供的串操作函数构造与串相关的算法解决简单的应用问题。

学时要求:

1个学时

多位数组和广义表

教学要求:

本章目的是介绍多级数组的逻辑结构特征及其存储方式,特殊矩阵和稀疏短阵的压缩存储方法及广义表的概念和性质,要求熟悉这些内容。

本章重点是熟悉多级数组的存储方式、短阵的压缩存储方式、广义表的定义及其性质,难点是稀疏短阵的压缩存储表示下实现的算法。

教学内容:

1.多维数组(领会)

1.1多维数组的逻辑结构特征。

1.2多维数组的顺序存储结构及地址计算方式。

1.3数组是一种随机存取结构的原因。

2.短阵的压缩存储(领会)

2.1特殊矩阵和疏稀矩阵的概念。

2.2特殊矩阵和压缩存储时的下标变换方法。

2.3稀疏矩阵的三元组表表示方法及有关算法。

3.广义表的概念(领会)

3.1广义表的有关概念及其与线性表的关系。

3.2广义表的性质

学时要求:

1个学时

教学要求:

本章目的是二元树的定义、性质、存储结构、遍历、线索化,树的定义、存储结构、遍历、树和森林与二元树的转换,哈夫曼树及其应用(优化判定过程和哈夫曼编码)等内容。

要求在熟悉这些内容的基础上,重点掌握二元树的遍历算法及其有关应用,难点是使用本章所学到的有关知识设计出有效算法,解决与树或二元树相关的应用问题。

教学内容

1.树的概念(领会)

1.1树的逻辑结构特征。

1.2树的不同表示方法。

1.3树的常用术语及含义。

2.二元树(简单应用)

2.1二元树的递归定义及树与二元树的差别。

2.2二元树的性质,了解相应的证明方法。

2.3二元树的两种存储方法、特点及适用范围。

3.二元树的遍历(综合应用)

3.1二元树的三种遍历算法,理解其执行过程。

3.2确定三种遍历所得到的相应的结点访问序列。

3.3以遍历算法为基础,设计有关算法解决简单的应用问题。

4.线索二元树(领会)

4.1二元树线索化的目的及实质。

4.2在中序线索树中查找给定结点的中序前趋和中序后继的方法。

4.3查找给定结点的前序前趋和后序后继并非有效的原因。

5.树和森林(领会)

5.1树和森林与二元树之间的转换方法。

5.2树的各种存储结构及其特点。

5.3树的遍历方法。

6.哈夫曼树及其应用(简单应用)

6.1最优二元树和最优前缀码的概念及特点。

6.2哈夫曼算法的思想。

6.3根据给定的叶结点及其权值构造出相应的最优二元树。

6.5利用哈夫曼树优化判定过程。

6.5根据最优二元树构造对应的哈夫曼编码。

学时要求:

12个学时

教学要求:

本章目的是介绍图的基本概念、两种常用的存储结构、两种遍历算法以及图的应用算法,要求在熟悉这些内容的基础上,重点掌握图的两种存储结构上实现的遍历算法。

本章难点是图的应用算法:

求最小生成树,求单源最短路径以及拓扑分类,要求掌握这些算法的基本思想及时间性能。

教学内容:

1.图的概念(领会)

1.1图的逻辑结构特征。

1.2图的常用术语及含义。

2.图的存储结构(简单应用)

2.1邻接矩阵和邻接表这两种存储结构的特点及适用范围。

2.2根据应用问题的特点和要求选择合适的存储结构。

3.图的遍历(简单应用)

3.1连通图及非连通图的深度优先搜索和广度优先搜索两种遍历算法,其执行过程以及时间复杂性分析。

3.2确定两种遍历所得到的顶点访问序列。

3.3图的两种遍历与树的遍历之间的关系。

3.4两种遍历所使用的辅助数据结构(钱或队列)在遍历过程中所起的作用。

3.5利用图的两种遍历设计算法解决简单的应用问题。

4.生成树和最小生成树(领会)

4.1生成树和最小生成树的概念。

4.2对遍历给定的图,画出深度优先和广度优先生成树或生成森林。

4.3Prim和Kruskal算法的基本思想、时间性能及这两种算法各自的特点。

4.4要求对给定的连通图,根据Prim和Kruskal算法构造出最小生成树。

5.最短路径(领会)

最短路径的含义;

5.2求单源最短路径的Dijkstra算法的基本思想和时间性能。

5.3对于给定的有向图,根据Dijkstra算法画出求单源最短路径过程示意图。

6.拓扑排序(领会)

6.1拓扑排序的基本思想和步骤。

6.2拓扑排序不成功的原因。

6.3对给定的有向图,若拓扑序列存在,则要求写出一个或多个拓扑序列。

学时要求:

10个学时

查找

教学要求:

本章目的是介绍线性表、树和散列表的查找方法、算法实现以及各种查找方法的时间性能(平均查找长度)分析。

在熟悉这些内容的基础上,重点掌握顺序查找、二分查找,二元查找树上查找以及散列表上查找的基本思想和算法实现。

本章难点是二元查找树的删除算法。

教学内容:

1.基本概念(识记)

1.1查找在数据处理中的重要性。

1.2查找算法效率的评判标准。

2.线性表的查找(简单应用)

顺序查找、二分查找、分块查找的基本思想、算法实现和查找效率分析。

2.2顺序查找中哨兵的作用。

2.3二分查找对存储结构及关镶字的要求。

2.4通过比较线性表上三种查找方法的优缺点,能‘根据实际问题的要求和特点,选择出

合适的查找方法。

3.树的查找(简单应用)

3.1二元查找树和B—树的定义和特点以及用途。

3.2二元查找树的插人、删除、建树和查找算法及时间性能。

3.3建立一棵二元查找树的过程实质上是对输入实例的排序过程,输入实例对所建立的二元查找树形态的影响。

4.散列技术(简单应用)

4.1散列表、散列函数、散列地址和装填因子等有关概念。

4.2散列函数的选取原则及产生冲突的原因。

4.3几种常用的散列函数构造方法。

4.4两类解决冲突的方法及其优缺点。

4.5产生“堆积”现象的原因。

4.6采用线性探测法和拉链法解决冲突时,散列表的建表方法、查找过程以及算法实现和时间分析。

4.7散列表和其它表的本质区别。

学时要求:

5个学时

分类

教学要求:

本章目的是介绍五类内部排序方法的基本思想、排序过程、算法实现、时间和空间性能的分析以及各种排序方法的比较和选择。

要求在熟悉这些内容的基础上,重点掌握快速排序、堆排序、归并排序和基数排序的基本思想及排序过程,本章难点是这四个排序算法的实现。

教学内容:

1.基本概念(识记)

排序在数据处理中的重要性。

1.2排序方法的“稳定”性含义。

1.3排序方法的分类及算法好坏的评判标准。

2.插人排序(综合应用)

2.1直接插入排序的基本思想和算法实现,以及在最好、最坏和平均情况下的时间性能分析。

2.2直接插入排序中哨兵的作用。

2.3针对给定的输入实例,要能写出直接插入排序的排序过程。

3.交换排序(综合应用)

3.1冒泡排序的基本思想。

3.2快速排序的基本思想和算法实现,以及在最坏和平均情况下的、时间性能分析,了解算法的稳定性。

3.3基准元素(划分元)对划分是否平衡的影响。

3.4针对给定的输入实例,能写出快速排序的排序过程。

4.选择排序(简单应用)

4.1堆、小根堆、大根培、堆顶等有关概念和定义。

4.2堆性质及堆与完全二元树的关系。

4.3直接选择排序和堆排序的基本思想和算法实现,以及时间性能分析

4.4针对给定的输入实例,写出堆排序的排序过程。

5.归并排序(领会)

5.I归并排序的基本思想和算法实现,以及时间性能分析。

5.2针对给定的输入实例,能写出归并排序的排序过程。

6.分配排序(领会)

6.1箱排序和基数排序的基本思想和算法实现,以及时间性能分析。

6.2针对给定的输入实例,能写出箱排序和基数排序的排序过程。

6.3分配排序与其它几类排序的区别

7.各种排序方法的比较和择选(简单应用)

7.1通过对被排序的记录数目、记录信息量的大小、关键字的结构及初始状态、稳定性要求、辅助空间的大小、各种时间性能等方面的比较掌握各种排序的优缺点。

7.2根据实际问题的特点和要求选择合适的排序方法。

学时要求:

5个学时

文件

教学要求:

本章目的是介绍存储在外存上的数据结构(即文件)的有关概念、各种文件的特点、组织方法及查询和更新操作,要求对这些内容做一般性的了解。

教学内容:

1.文件的基本概念(识记)

文件的有关概念。

1.2文件的逻辑结构及其操作。

1.3文件的存储结构(组织方式)分类。

1.4评价文件组织效率的标准。

2.顺序文件(识记)

2.1顺序文件的特点及外存种类的适应性。

2.2顺序文件上各种查找方法的基本思想及对外存种类的要求。

3.索引文件(识记)

3.1索引文件的组织方式和特点。

3.2索引文件的查询和更新操作的基本思想。

4.索引顺序文件(识记)

4.1索引顺序文件是最常用的一种文件组织方式的原因。

4.2两种最常用的索引顺序文件(ISAM文件和VSAM文件)的组织方式和特点。

4.3在ISAM文件和VSAM文件上查询和更新操作的基本思想。

5.散列文件,(识记)

5.1散列文件的组织方式和特点。

5.2散列文件的查询和更新操作的基本思想。

6.多关键字文件(识记)

6.1多关键字文件与其它文件的区别。

6.2多重表文件和倒排文件的组织方式和特点。

6.3多重表文件和倒排文件上查询及更新操作的基本思想。

学时要求:

2学时

五、实践环节

(一)类型

课程设计

(二)目的与要求

通过课程设计加深对课程内容的理解,增加感性认识,提高软件设计、编写、程序调试的能力和利用所学知识解决实际问题的能力。

要求所编的程序能正确运行,并提交课程设计报告,并附程序软盘(包括程序文件清单)。

课程设计报告的基本要求为:

1.需求分析:

陈述程序设计的任务,强调程序要做什么,明确规定:

(1)输入的形式和输入值的范围;

(2)输出的形式;

(3)程序所能达到的功能;

(4)测试数据:

包括正确的输入输出结果和错误的输入及其输出结果。

2.概要设计:

说明用到的数据结构定义、主程序的流程及各程序模块之间的调用关系。

3.详细设计:

提交带注释的源程序或者用伪代码写出每个操作所涉及的算法。

4.调试分析:

(1)调试过程中所遇到的问题及解决方法;

(2)算法的时空分析;

(3)经验与体会。

5.用户使用说明:

说明如何使用你的程序,详细列出每一步操作步骤。

6.测试结果:

列出对于给定的输入所产生的输出结果。

若可能,测试随输入规模的增长所用算法的实际运行时间的变化。

(三)内容

1.单链表的插入和删除

要求单链表的数据域是字符串,且不允许重复的串插入表中;删除操作是根据输入的字符串,先找到相应的结点,后删除之。

2.二元树操作

要求采用二元链表作为存储结构,完成二元树的建立,先序、中序和后序以及按层次遍历的操作,求所有叶子及结点总数的操作等。

3.图的遍历操作

可采用邻接矩阵或邻接表作为存储结构,完成有向图和无向图的DFS和BFS操作。

4.数据查找

实现顺序查找、折半查找及二元排序树上的查找算法,比较它们的查找速度。

实验时所输入的数据可按有序和随机产生去组织。

5.排序实现插入、冒泡、选择、快速、堆、归并等排序算法,鼓励实现基数排序。

比较各种排序算法的运行速度。

以上建议以菜单形式组织以上各种操作,并采用文件形式作为输入和输出。

6.一元多项式的代数运算7.通讯系统中的哈夫曼编码和译码问题8.算术和逻辑运算器9.交通灯管制问题10.集合的表示及其操作问题11.求最小生成树问题12.单源最短路径问题13.学生成绩管理14.档案的建立和检索15.小型文本编辑器

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 理化生

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1