《数据结构与算法》课程教学大纲
课程代码: 12281030
适用专业:计算机应用技术
总学时数: 68 学时,其中:理论教学 34 学时,实践教学 34 学时。 学分: 4.5
先修课程:《C语言程序导论》、《程序设计导论》 考核方式:机试 一、制订大纲的依据
本大纲根据 2013 年软件技术专业教学计划制订。 二、课程简介
数据结构是介于数学、计算机硬件和计算机软件之间的一门计算机科学与技术专业的核心课程,是高级程序设计语言、编译原理、操作系统、数据库等课程的基础。同时,数据结构技术也广泛应用于信息科学、系统工程、应用数学以及各种工程技术领域。数据结构课程集中讨论软件开发过程中的设计阶段、同时设计编码和分析阶段的若干基本问题。此外,为了构造出好的数据结构及其实现,还需考虑数据结构及其实现的评价与选择。因此,数据结构的内容包括抽象、实现和评价三个层次,从数据表示和数据处理上看有五个基本组成“要素”分别是逻辑结构,存储结构、基本运算、算法及不同数据结构的比较与算法分析。
三、课程性质、教育目标
( 一 ) 性质:本课程为计算机系软件技术专业的专业课。
(二)教育目标: 通过本课程的学习,使学生深透地理解数据结构的逻辑结构和物理结构的基本概念以及有关算法,培养基本的、良好的程序设计技能,编制高效可靠的程序,为学习操作系统、编译原理和数据库等课程奠定基础。
四、课程教学内容与基本要求 第一部分 绪论 ( 一) 教学内容
数据结构的基本概念和术语; 抽象数据类型的表示; 算法和算法分析。 ( 二 ) 重点、难点
重点:数据结构的基本概念及相关术语。
- 1 -
难点:算法的时间复杂度分析。
( 三 ) 教学基本要求
知识要求:
了解:抽象数据类型及面向对象概念;
理解:算法的定义及算法的特性;
掌握:数据结构的基本概念、算法的性能分析与度量方法。
第二部分 线性表
( 一) 教学内容
1.线性表的定义及操作;
2.线性表的顺序存储定义及操作实现;
3.单链表的定义;单链表中的插入与删除;带表头结点的单链表;静态链表;
4.循环链表的类定义及运算;
5.双向链表的类定义及运算;
6.线性表的应用:多项式及其相加。
( 二 ) 重点、难点
重点:顺序表的数组定义方式及实现,单链表的定义及实现。
难点:循环链表和双向链表的定义及实现。
( 三 ) 教学基本要求
知识要求:
了解:静态链表。
理解:线性表的定义及操作。
掌握:顺序表的数组定义方式及实现,单链表、循环链表和双向链表的定义及实现。
第三部分 栈和队列
( 一) 教学内容
1.栈的抽象数据类型;栈的顺序存储表示;栈的链式存储表示;栈的两种存储表示上的基本运算;
2.栈的应用;
- 2 -
3.队列的抽象数据类型;队列的顺序存储表示及基本运算;队列的链式存储表示及基本运算;
4.队列的应用举例。
( 二 ) 重点、难点
重点:栈的定义及实现;队列的定义及实现。
难点:栈的应用中的表达式求值;循环队列(队列的顺序存储) 。
( 三 ) 教学基本要求
知识要求:
了解:队列的应用。
理解:栈的应用中的递归算法。
掌握:栈的定义及实现;队列的定义及实现。栈的应用中的表达式求值;循环队列(队列的顺序存储) 。
第四部分 串、数组和广义表
( 一) 教学内容
1.字符串的抽象数据类型;字符串操作的实现;字符串的模式匹配
2.数组的逻辑结构定义和存储方法;特殊矩阵和稀疏矩阵的压缩存储方法;
3.广义表的概念;广义表的表示及操作;广义表存储结构的实现;
4.广义表的访问算法;广义表的递归算法。
( 二 ) 重点、难点
重点:串和数组的基本概念、存储结构。广义表的概念和存储结构及其相关运算的实现。
难点:串的模式匹配算法,特殊矩阵和稀疏矩阵的压缩存储。
( 三 ) 教学基本要求
知识要求:
了解:串的一些基本处理操作、矩阵的相关运算。
理解:广义表的递归算法。
掌握:串和数组的基本概念、存储结构。广义表的概念和存储结构及其相关运算的实现。串的模式匹配算法,特殊矩阵和稀疏矩阵的压缩存储。
- 3 -
第五部分 树和二叉树
( 一) 教学内容
1.树的基本概念;
2.二叉树的定义、性质、存储表示及相关运算;二叉树的遍历;线索二叉树;
3.森林和二叉树的相互转换;
4.哈夫曼树及哈夫曼编码。
( 二 ) 重点、难点
重点:二叉树的定义、性质、存储表示;二叉树的遍历;
难点:二叉树的相关运算。
( 三 ) 教学基本要求
知识要求:
了解:线索二叉树上的复杂运算实现。
理解:二叉树的相关运算。
掌握:二叉树的定义、性质、存储表示;二叉树的遍历;森林和二叉树的相互转换;哈夫曼树及哈夫曼编码。
第六部分 图
( 一) 教学内容
1.图的基本概念、存储表示(邻接矩阵、邻接表、十字链表,邻接多重表)
;
2.图的遍历与连通性: 深度优先搜索; 广度优先搜索; 连通分量;重连通分量;
3.最小生成树:克鲁斯卡尔算法;普里姆算法;
4.最短路径;
5.拓扑排序、关键路径。
( 二 ) 重点、难点
重点:图的存储表示;图的遍历;最小生成树;最短路径;
难点:关键路径的求解。
( 三 ) 教学基本要求
知识要求:
了解:图的存储结构中的邻接多重表。
- 4 -
理解:图的遍历算法。
掌握:图的存储表示(邻接矩阵、邻接表) ;图的遍历;最小生成树;最短路径;拓扑排序、关键路径。
第七部分 查找
( 一) 教学内容
1.静态查找(顺序查找、折半查找、分块查找) ;
2.动态查找(二叉排序树) ;
3.哈希查找。
( 二 ) 重点、难点
重点:静态查找;二叉排序树的建立。
难点:二叉排序树的删除;平衡二叉树的调整。
( 三 ) 教学基本要求
知识要求:
了解:查找的相关概念、作用。
理解:哈希函数的构造。
掌握:静态查找;二叉排序树的相关知识;哈希查找法和解决冲突的方法。
第八部分 排序
( 一) 教学内容
1.排序概念;
2.插入排序、交换排序、选择排序、归并排序、基数排序;
3.各种排序方法的比较。
( 二 ) 重点、难点
重点:交换排序、选择排序。
难点:堆排序。
( 三 ) 教学基本要求
知识要求:
了解:各种排序方法的时间复杂度的分析方法。
理解:排序方法“稳定”或“不稳定”的含义。
- 5 -