《数据结构与算法》课程教学大纲
合肥学院计算机科学与技术系
《数据结构与算法》精品课程建设组
二〇〇六年五月十二日(第1次修订)
二〇〇六年十一月三日(第2次修订)
二〇〇七年五月三日(第3次修订)
课程编号:0433224 课程名称:数据结构与算法 学时:
60
一、 说明部分
1.课程性质
数据结构与算法(Data Structure & Algorithm)是计算机科学与技术专业、计算机控制专业、电子信息专业和信息与计算科学专业等人才培养计划中的一门必修的核心课程。是计算机科学与技术专业和其他从事计算机与技术工作的人员的一门重要的基础专业课。本课程教学对象为工科应用型计算机科学与技术、计算机控制、网络工程、电子信息和计算科学等专业学生。
2.课程教学的目的及意义
当用计算机来解决实际问题时,就要涉及到数据的表示及数据的处理,而数据表示及数据处理正是数据结构课程的主要研究对象。《数据结构与算法》课程的主要任务是:讨论现实世界中数据(即事物的抽象描述)的各种逻辑结构(关系),在计算机中的存储结构(物理结构)以及进行各种非数值运算的算法。目的是使学生掌握数据组织、存储和处理的常用方法,为以后进行软件开发和学习后继专业课程打下基础。
3.教学内容及教学要求
在基础知识方面,要求学生掌握常用数据结构的基本概念及其不同的实现方法;在软件技能方面,通过系统学习能够在不同存储结构上实现不同的运算,并掌握算法设计的方式和技巧。课程的教学要求之一是训练学生进行算法(程序)设计的技能和培养良好程序设计的习惯,其重要程度决不亚于知识的传授。
教学内容:本课程把数据结构的内容分为四部分,第一部分是线形数据结构(第02章--第06章),包括顺序表、链表、堆栈和队列、串、数组、特殊矩阵和稀疏矩阵、广义表等内容;第二部分是树形数据结构(第07章--第08章),包括二叉树、二叉排序树、哈夫曼树、树和森林等内容;第三部分是集合形数据结构(第09章),包括散列结构等内容;第四部分是图形数据结构(第10章),包括图、最小生成树、拓扑排序和关键路径、最短路径问题等内容;第01章介绍有关数据结构的基础知识;第10章介绍有关算法性能分析问题和算法设计方法问题。每一种数据结构按照基本知识、逻辑结构、存储结构、基本算法和应用问题的线索展开介绍。这样编排的教学内容,有利于应用问题的组织和展开。
在教学过程中要求学生把数据结构的学习与程序设计、上机实践紧密地结合起来,以提高学生分析问题和解决问题的能力。
要求具备C/C++上机环境。
4.本课程与其它课程的联系
本课程应开设在“计算机科学与技术导论”和“C语言程序设计”课程之后,本课程的后继专业课是“操作系统原理”和“软件工程学”等专业基础课。
5.教学方法及教学手段
数据结构既具有很强的理论性,又有很强的实用性,内容十分丰富。因此,本课程的教学方法主要采用课堂讲授和学生自学相结合;分析问题与归纳总结相结合;理论教学与实践教学相结合;注重启发式教学,从基本概念入手,由浅入深,循序渐进,突出重点、难点。教学目标是要使学生既掌握数据结构的基本原理和方法。采用课堂讲授法+多媒体课件(教学软件)+实验+课程设计等教学环节和手段实施教学。
6.总学时数
课程总学时数:84学时,章节参考教学(上机)时数安排见表1。
其中课堂讲授:60学时;实验:24学时;课程设计:2周。
表1. 章节安排和学时分配表
章节
|
一
|
二
|
三
|
四
|
五
|
六
|
七
|
八
|
九
|
十
|
名称
|
数据结构和算法
|
顺序表及其应用
|
链表及其应用
|
栈及其应用
|
队列及其应用
|
特殊矩阵广义表及其应用
|
二叉树及其应用
|
树和森林及其应用
|
散列结构及其应用
|
图及其应用
|
学时
|
4+2
|
8+6
|
6+2
|
6+2
|
4+2
|
4+2
|
10+4
|
4
|
4
|
10+4
|
7.教材及主要参考书
教材:
[1].王昆仑,李红。数据结构与算法。北京:中国铁道出版社,2007 年5月第1版。ISBN 7-113-07628-3/TP.220
[2].徐孝凯,数据结构实用教程。北京:清华大学出版社,1999年12月第1版。
主要参考书
[1].严蔚敏等。数据结构(c语言版)。北京:清华大学出版社,2001年4月第1版。
[2].严蔚敏等。数据结构题集(c语言)。北京:清华大学出版社,1999年2月第1版。
[3].胡学钢等。数据结构算法设计指导。北京:清华大学出版社,1999年 第1版。
[4].刘大有,数据结构(面向21世纪课程教材)。北京:高等教育出版社。2001年6月第1版。
[5].李春葆。数据结构习题与解析(c语言)。北京:清华大学出版社,2000年1月第1版。
8.教学时间安排和考核方法
学期:第四学期教学;
周课时:课堂教学 4学时/周,上机实验 2学时/周;
教学、实验周安排:第1--15周;
课程设计周安排: 第16-17周;
考核方法:总成绩=听课笔记*10%+作业成绩*5%+考勤*5%+实验*30%+期末笔试成绩*50%
课程设计成绩:按学生完成课程设计质量情况(解决问题的合理性、创新性、课程设计报告等)单独计算成绩,分为五个层次:优秀、良好、中等、及格和不及格。
二、正文部分
第一章 数据结构和算法
一.教学内容:
1、数据、数据元素、数据对象、数据类型和数据结构等概念、术语的确定含义;
2、抽象数据类型的定义、表示和实现方法;
3、描述算法的工具;
4、算法设计的基本要求以及从时间和空间角度分析算法的方法;
5、C/C++编程环境和程序调试、指针和函数等。
二.知识点分析:
1、本章知识点:
抽象数据类型,数据的逻辑结构,数据的存储结构,数据结构,算法,算法时间复杂度,算法空间复杂度、
2、了解层次:
1、抽象数据类型的定义、表示和实现方法[选学内容]。
3、理解层次:
1、算法五个要素的确切含义:
① 动态有穷性(能执行结束);
② 确定性(对于相同的输入执行相同的路径);
③ 有输入;
④ 有输出;
⑤ 可行性(用以描述算法的操作都是足够基本的)。
4、掌握层次:
1、各名词、术语的含义,掌握基本概念,特别是数据的逻辑结构和存储结构之间的关系。分清哪些是逻辑结构的性质,哪些是存储结构的性质。
2、计算语句频度和估计算法时间复杂度的方法。
3、C语言的结构型数据类型定义、函数、函数调用,指针和C编译运行环境等必要的知识。
三.教学重点:
1、数据结构和逻辑结构在概念上的联系与区别;
2、评价算法优劣的标准及方法。
3、C语言的函数、函数调用,指针、编程环境和程序调试。
4、本课程使用的算法描述工具。
四.教学难点:
1、逻辑结构、存储结构的联系与区别;
2、算法的时间复杂度分析。
五.教学方法和教学手段:
采用讲授法+多媒体课件+实验实施教学。
六.本章学时数:讲授4学时,实验2学时。
第二章 顺序表及其应用
一.教学内容:
1、表的数学表示方法;
2、顺序表的逻辑结构定义、顺序表数据类型定义、串的数据类型定义;
2、顺序表的存储结构;
3、串的定长顺序存储结构;
4、顺序表的基本算法及算法分析;(建立、插入、删除等基本算法的实现)
5、顺序表的应用(一);(查找算法:顺序查找、有序表的查找方法(二分查找)、分块查找、)及算法分析。
6、顺序表的应用(二)(排序算法:算法稳定性概念;插入排序、交换排序、选择排序、归并排序、外排序、希尔排序、快速排序)及算法分析。
7、串的基本算法及算法分析;(各种基本算法的实现,串匹配的KMP算法,模式匹配等)
二.知识点分析:
1、本章知识点:
顺序表,串,排序、查找、插入、删除的意义,排序算法的稳定性观念,串匹配,模式匹配。
2、了解层次:
1、能在实际应用中选用适当的链表结构。
3、理解层次:
1、串的模式匹配算法。
4、掌握层次:
1、顺序存储结构的描述方法。
2、线性表在顺序存储结构上实现基本操作:查找、插入、删除等算法。
3、顺序表的应用。
4、顺序串的应用。
三.教学重点:
1、查找表的基本概念及查找方法;
2、顺序表上插入、删除和查找运算的现实;
3、查找运算在查找表和有序表上的实现;
4、排序基本概念及内排序和外排序、稳定排序和非稳定排序的区别;
5、各种排序的基本思想、基本步骤、算法和算法分析;
6、串的应用(模式匹配等)
四.教学难点:
1、线性表与线性结构的联系与区别;
2、希尔排序
3、快速排序
五.教学方法和教学手段:
采用讲授法+多媒体课件+实验实施教学。
六.本章学时数:讲授8学时,实验6学时。
第三章 链表及其应用
一.教学内容:
1、链表的数学表示方法;
2、链表的逻辑结构定义、链表的数据类型定义、串的数据类型定义;
3、链表的存储结构;串的块链存储结构;
4、链表的基本算法及算法分析;
5、链表的应用(顺序查找、二分查找、分块查找、希尔排序、快速排序)
6、链串的各种基本操作的实现及其应用;
二.知识点分析:
1、本章知识点:
结点,头结点,链,链表,单链表、循环链表、链串。
2、了解层次:
1、链串的两种存储方式。
3、理解层次:
1、能在实际应用中选用适当的链表结构。
4、掌握层次:
1、链式存储结构的描述方法。
2、线性表在链表存储结构上实现基本操作:查找、插入、删除的算法。
3、循环链表链表上插入、删除和查找运算的现实;
4、链表的应用。
5、链串的应用。
三.教学重点:
1、单链表上插入、删除和查找运算的现实;
2、循环链表上插入、删除和查找运算的现实;
3、链串的基本概念、基本运算;
四.教学难点:
1、头结点在链表中的作用;
2、指针操作;
3、操作运算在循环链表上的实现;
4、串的基本运算综合应用
五.教学方法和教学手段
采用讲授法+多媒体课件+实验实施教学。
六.本章学时数:讲授6学时,实验2学时。
第四章 栈及其应用
一.教学内容:
1、栈的数学表示方法;
2、栈的逻辑结构定义、数据类型定义;
3、栈的存储结构;
4、栈的基本算法及算法分析;
5、栈的应用。
二.知识点分析
1、本章知识点:
栈,栈满,栈空,递归,递归算法,非递归算法。
2、了解层次:
1、递归算法到非递归算法的机械转化过程。
3、理解层次:
1、递归算法执行过程中栈的状态变化过程。
2、栈数据类型的特点,并能在相应的应用问题中正确选用它们。
4、掌握层次:
1、栈的顺序存储结构及其基本操作实现算法;
2、栈的链式存储结构及其基本操作实现算法;
3、栈满和栈空的条件以及它们的描述方法。
4、栈的应用。
三.教学重点:
1、栈的顺序存储结构、链式存储结构及运算实现;
2、递归算法执行过程中栈的状态变化过程。
3、栈的应用。
四.教学难点:
1、递归算法执行过程中栈的状态变化过程。
五.教学方法和教学手段
采用讲授法+多媒体课件+实验实施教学。
六.本章学时数:讲授6学时,实验2学时。
第五章 队列及其应用
一.教学内容:
1、队列的数学表示方法;
2、队列的逻辑结构定义、数据类型定义
3、队列的存储结构;
4、队列的基本算法及算法分析;
5、队列的应用
二.知识点分析
1、本章知识点:
队列、循环队列、链队列、队满(空)判断条件。
2、了解层次:
3、理解层次:
1、链式队列及其算法实现;
4、掌握层次:
1、队列数据类型的特点,并能在相应的应用问题中正确选用它们。
2、循环队列和链队列的基本操作实现算法;
3、特别应注意队满和队空条件的表示方法。
三.教学重点:
1、顺序队列及其基本算法实现;
2、循环队列及其基本算法实现;
3、队列算法分析;
4、队列的应用。
四.教学难点:
1、循环队列的队空、队满判断条件;
2、循环队列上的插入、删除操作。
五.教学方法和教学手段
采用讲授法+多媒体课件+实验实施教学。
六.本章学时数:讲授4学时,实验2学时。
第六章 特殊矩阵广义表及其应用
一.教学内容:
1、数组的数学表示方法;(数组在以行(列)为主的存储结构中的地址计算方法。对特殊矩阵进行压缩存储时的下标变换公式。)
2、数组的逻辑结构定义、数据类型定义;
3、数组的存储结构;
4、数组的应用
5、稀疏矩阵的存储结构和算法简介;
6、广义表的定义和存储结构。
二.知识点分析:
1、本章知识点:
数组元素,数组,数组首地址,特殊(稀疏)矩阵,广义表,表结点,原子结点。
2、了解层次:
1、稀疏矩阵的压缩存储表示下的运算的实现。
3、理解层次:
1、稀疏矩阵的两种压缩存储方法的特点和适用范围,领会以三元组表示稀疏矩阵时进行矩阵运算采用的处理方法。
4、掌握层次:
1、多维数组的两种顺序存储方式;
2、数组元素的地址计算方法;
4、稀疏矩阵的三元组表表示方法。
6、广义表的逻辑结构和存储结构;
三.教学重点:
1、多维数组的两种顺序存储方式;
2、数组元素地址的计算方法;
3、特殊矩阵的压缩存储方式;
4、稀疏矩阵的三元组表表示方法。
四.教学难点:
1、特殊矩阵的压缩存储
2、多维数组元素地址的计算方法;
五.教学方法和教学手段
采用讲授法+多媒体课件+实验实施教学。
六.本章学时数:讲授4学时,实验2学时。
第七章 二叉树及其应用
一.教学内容:
1、二叉树的数学基础知识;(二叉树的定义;二叉树的性质;堆的概念等等)
2、二叉树的逻辑结构定义、数据类型定义;
3、二叉树的存储结构;(各种存储结构的特点及适用范围)。
4、二叉树的基本算法及算法分析;(二叉树遍历算法,二叉树的线索化算法,二叉排序树的建立算法)。
5、二叉树的应用(哈夫曼树,二叉排序树,最优树,静态查找树的构造方法和查找算法,平衡二叉排序树,堆和堆排序);
6、二叉树的应用(哈夫曼编码、表达式及其求值等);
7、树的存储结构与运算;
8、树与二叉树的转换;
9、B-树。
二.知识点分析:
1、本章知识点:
二叉树、满二叉树,完全二叉树,路径,路径长度,遍历,线索,堆,堆排序。
2、了解层次:
1、二叉树的非递归遍历算法;
2、堆排序算法。
3、理解层次:
1、二叉排序树上实现的几种运算;
2、平衡二叉排序树的概念及维护平衡方法。
3、堆排序方法。
4、掌握层次:
1、二叉树的定义、逻辑特点及性质;
2、二叉树的基本运算;(建立、初始化、遍历、输出等)
3、二叉树的三种遍历方法及其算法;
4、哈夫曼树和哈夫曼算法及其应用;
5、线索二叉树及其线索化算法;
7、二叉树的应用;
三.教学重点:
1、二叉树的定义及性质;
2、二叉树的三种遍历方法
3、线索二叉树及其线索化算法;
4、二叉树的应用;
四.教学难点:
1、三种遍历的主要区别;
2、二叉树上的复杂运算;
3、平衡二叉树的旋转平衡算法;
4、堆排序方法。
五.教学方法和教学手段
采用讲授法+多媒体课件+实验实施教学。
六.本章学时数:讲授10学时,实验4学时。
第八章 树和森林及其应用
一.教学内容:
1、树和森林的概念、定义和性质
2、树和森林的存储结构、树和森林的遍历等基本算法及性能分析
3、树、森林与二叉树的关系、转换算法及性能分析
4、树的应用
二.知识点分析:
1、本章知识点:
树和森林的概念、定义和性质、B-树。
2、了解层次:
1、B-树的应用
3、理解层次:
1、树和森林的概念、定义和性质
2、树和森林的存储结构
3、树、森林与二叉树的关系
4、森林与二叉树转换算法思想
5、森林的遍历算法思想
6、B-树的概念、查找算法和插入算法
4、掌握层次:
1、树的遍历算法及性能分析
2、树转换为二叉树算法及性能分析
3、树的应用——B-树
三.教学重点:
1、树和森林的概念、定义和性质
3、树、森林与二叉树的关系
1、树的遍历算法及性能分析
2、树转换为二叉树算法及性能分析
4、森林与二叉树转换算法思想
四.教学难点:
1、树和森林的概念、定义和性质
2、树和森林的存储结构
3、B-树的概念及其应用
五.教学方法和教学手段
采用讲授法+多媒体课件+实验实施教学。
六.本章学时数:讲授4学时。
第九章 散列结构及其应用
一.教学内容:
1、散列结构的逻辑结构定义、数据类型定义
2、散列结构的存储结构;
3、散列结构的基本算法及算法分析;(各种解决冲突的方法;查找、插入和删除运算的算法)。
4、散列结构的应用。
二.知识点分析:
1、本章知识点:
散列,散列函数,散列表,同义词。
2、了解层次:
3、理解层次:
1、散列表的相关概念。
2、散列表与其他结构表的实质性的差别。
4、掌握层次:
1、散列函数构造方法;
2、散列表的构造方法;(开地址法,线性探查法,链接法等)
3、散列表的基本运算算法;(查找,删除,插入等)
4、散列表的应用。
三.教学重点:
1、散列表及散列存储和散列查找的基本思想、各种解决冲突的方法;
2、在散列表上实现查找、插入和删除运算的算法。
3、散列表的应用。
四.教学难点:
1、散列表的构造方法。
五.教学方法和教学手段
采用讲授法+多媒体课件+实验实施教学。
六.本章学时数:讲授4学时。
第十章 图及其应用
一.教学内容:
1、图的数学基础知识;(图的定义和术语;图的性质;图的连通性;最小生成树;关键路径;最短路径等)
2、图的逻辑结构定义、数据类型定义
3、图的存储结构;
4、图的基本算法及算法分析;(图的深度优先遍历和广度优先遍历,最小生成树,拓扑排序)
5、图的应用(最短路径问题的解法等等);
二.知识点分析:
1、本章知识点:
图和图的性质,最小生成树,关键路径,最短路径,邻接表,拓扑排序。
2、了解层次:
1、实际问题的求解效率与采用何种存储结构和算法。
3、理解层次:
1、各知识点相关概念。
2、图的所有相关算法。
3、拓扑排序的算法思想;
4、掌握层次:
1、图的相关概念。
2、图的各种存储结构及其构造算法。
3、图的两种搜索路径的遍历算法。
4、图的应用(求解路径问题)。
三.教学重点:
1、各种图的邻接矩阵表示法;
2、图的深度优先搜索遍历方法和广度优先搜索遍历方法;
3、生成树和最小生成树的概念
4、最小生成树构造算法;(普里姆算法或者克鲁斯卡尔算法);
5、拓扑序列和拓扑排序的概念;掌握拓扑排序的算法思想;
6、关键路径的算法;最短路径的算法。
7、图的应用。
四.教学难点:
1、区别图的两种存储结构的不同点及其应用场合;
2、关键路径的算法思想;
3、最短路径的算法思想。
五.教学方法和教学手段
采用讲授法+多媒体课件+实验实施教学。
六.本章学时数:讲授10学时,实验4学时。
执笔人:王昆仑 教研室: 软件教研室 系主任审核签名: