1
0
mirror of https://github.com/JackeyLea/NJUCS.git synced 2026-02-03 10:03:28 +08:00

添加数据结构资料

This commit is contained in:
JackeyLea
2020-12-23 16:38:39 +08:00
parent 0b386d22d2
commit a191fdb9a3
204 changed files with 41844 additions and 0 deletions

View File

@@ -0,0 +1,14 @@
老师:
您好,感谢您选用本教材。
为方便作者获取使用教材学校信息,也为了反馈您使用教材中遇到的问题,请您填写反馈表
并反馈您在教材使用过程中遇到的问题与建议。
联系方式:
jsjjc@tup.tsinghua.edu.cn
010-62770175-4608/4009 62795954
注:本资源为提供给任课老师的资源

View File

@@ -0,0 +1,344 @@
《数据结构》教学大纲及班级周历
课程名:
数据结构
英文名:
Data Structures
先修课程:
离散数学、程序设计基础
建议教材:
《数据结构用面向对象方法与C++描述)第二版》(清华大学出版社) 殷人昆等
参考资料:
1. 《数据结构与算法描述——C语言描述》机械工业出版社Mark Allen Weiss
2. 《数据结构》第2版清华大学出版社严蔚敏
教学内容:
第一部分 基本概念和算法分析
什么是数据结构
数据、数据对象、数据结构、逻辑结构、存储结构。定义以及举例
抽象数据类型及面向对象概念
定义、举例(自然数的抽象数据类型定义)
模板
简单介绍
算法和算法分析
算法的定义及特性、算法的性能标准、算法分析、空间复杂度和时间复杂度的渐进表示法
第二部分 线性表
顺序表
定义和特点、操作(查找、插入、删除)、应用
单链表
特点、存储表示、实现、操作(建立、插入、删除)、带表头结点的单链表、静态链表结构
循环链表
特点、实现、搜索操作、回收循环链表、用循环链表求解约瑟夫问题
双向链表
结构、定义、操作(搜索、插入、删除)
多项式及其相加
多项式的链表表示、多项式链表的相加
第三部分 栈和队列
定义、抽象数据类型表示、顺序栈、链式栈、双栈共享一个空间
表达式求值
算术表达式、应用后缀表示计算表达式的值、中缀表达式转换为后缀表达式
栈和递归
递归的概念、递归的方法、递归的举例、构成递归的条件
递归过程与递归工作栈
递归工作栈在递归过程中的工作原理
队列
定义、抽象数据类型表示、操作(出队、入队)、循环队列、链式队列、应用
优先级队列
概念、简单实现
第四部分 数组、串和广义表
作为抽象数据类型的数组
数组的定义和初始化、一维数组、二维和多维数组、数组的顺序存储方式
特殊矩阵
对称矩阵、三角矩阵、三对角矩阵等的压缩存储表示
稀疏矩阵
稀疏矩阵的三元组存储表示和正交链表的存储表示形式和相关操作
字符串
定义、抽象数据类型表示、部分操作的实现、模式匹配朴素的模式匹配算法和KMP算法
广义表
概念、特性、表示、head和tail操作、存储实现、递归算法复制、判等、删除、建立等
第五部分 树与二叉树
树和森林的概念
定义、特点、术语
二叉树
定义、性质及证明、举例
二叉树的表示
顺序表示、链表表示、静态结构表示、实现
二叉树遍历
前序(中序、后序)遍历的递归实现和非递归实现、二叉树的建立、应用二叉树遍历的实例
线索化二叉树
概念、链表表示、中序(前序、后序)线索化二叉树、主要操作(求后继和前驱、建立线索化、插入、删除)
树与森林
存储表示、树(森林)与二叉树的转换、树(森林)的遍历
定义、建立Filterdown调整算法、插入FilterUp调整算法、删除堆顶元素
Huffman树
带权路径长度的概念、Huffman树、Huffman算法、Huffman编码
第六部分 集合与字典
集合
集合的基本表示(位向量、有序链表)、集合相关操作的实现
等价类与并查集
确定等价类的算法、并查集的概念、并查集的主要操作及算法分析
字典
字典的有序顺序表和有序链表表示、有序顺序表和有序链表中查找操作的实现
散列
基本概念、散列函数(直接定址法、数字分析法、除留取余法、平方取中法、折叠法等)、处理冲突的方法(线性探查法、二次探查法、双散列法、链地址法)、散列表分析
第七部分 搜索结构
静态搜索表
搜索的概念、顺序搜索、折半搜索
二叉搜索树
定义、三种基本操作(查找、插入、删除)
AVL树
定义及性质、平衡化旋转、主要操作插入、删除、AVL树的高度
第八部分 图(着重讲解算法的实现技巧和分析)
图的基本概念
定义、有向图、无向图、完全图、邻接顶点、子图、路径、度、连通等
图的存储表示
邻接矩阵、邻接表、邻接多重表
图的遍历与连通性
深度优先搜索、广度优先搜索、连通分量、重连通分量
最小生成树
Kruskal算法、Prim算法
最短路径
Dijkstra算法、Bellman and Ford算法、Floyd算法
活动网络
AOV网拓扑排序、VOE网络关键路径
第九部分 排序 (着重讲解各种算法的特点、比较及分析)
基本概念
排序、关键码、稳定性、算法分析(时间和空间开销)
插入排序
直接插入排序、 折半插入排序、Shell排序
交换排序
冒泡排序、快速排序
选择排序
直接选择、 锦标赛、堆排序
归并排序
2-路归并算法、迭代的归并排序算法、递归的归并排序算法
基数排序
基本思想、多关键码排序、链式基数排序
第十部分 文件、外部排序与外部搜索
静态索引结构
线性索引稠密和稀疏索引、m路静态搜索树
动态索引结构
动态的m路搜索树、B-树的基本概念、B-树的操作插入、删除、B+树
教学目标:
通过本课程的学习,使学生能够掌握基本的数据结构的特点、存储方法和基本运算,高效地表示、存储、组织和处理数据,从而提高程序设计的质量,并能灵活运用各种数据结构来解决实际问题。
通过本课程的学习及课程实验,将提高学生的实际动手能力,为后续的专业基础课和专业课程(算法分析、操作系统、软件工程、数据库概论、编译原理等)打下坚实的基础。
其它要求:
实验安排:
为理解和巩固教学中的基本知识,并熟练运用各种数据结构和算法,需要一定数量的上机实验,以检查所学内容的掌握程度,发现学习中存在的问题。
1实验时间
本课程共安排54学时3*18的上机实验。
2实验安排
本课程上机实验分两部分:
第一部分根据教学进度安排10次周实验习题上机时间随堂检查。实习题目基本涵盖所学内容。
第二部分:布置课程实习大作业,综合应用所学到的数据结构和算法知识。期末检查。
3实验计划安排
第几周 实验内容
2 数组的应用
3 串操作KMP算法
4 链表的应用1
5 链表的应用2
6 栈的应用
7 递归问题求解
8 递归的模拟
9 二叉树的建立及遍历
10 二叉树的应用
11 图的实现和应用 1
12 图的实现和应用 2
13-16周 实习大作业(综合应用习题)
17-18周 复习及考试
--------------------------------------------------------------------------------
教学周历:
周次 教学内容 教师 授课方式 备注
1 数据结构基本概念 1 什么是数据结构数据、数据对象、数据结构、逻辑结构、存储结构等的定义以及举例 2 抽象数据类型及面向对象概念抽象数据类型定义。ADT举例自然数的抽象数据类型定义 3 模板模板的基本概念 4 算法和算法分析 算法的定义及特性、算法的性能标准、算法分析、空间复杂度和时间复杂度的渐进表示法 姜远 课堂教学
2 线性表 1 顺序表 定义和特点、操作(查找、插入、删除)、应用 2 单链表 特点、存储表示、实现、操作(建立、插入、删除)、带表头结点的单链表、静态链表结构 3 循环链表 特点、实现、搜索操作、回收循环链表、用循环链表求解约瑟夫问题 姜远 课堂教学
3 线性表(续) 4 双向链表 结构、定义、操作(搜索、插入、删除) 5 多项式及其相加多项式的链表表示、多项式链表的相加 姜远 课堂教学
4 栈和队列 1 栈定义、抽象数据类型表示、顺序栈、链式栈、双栈共享一个空间 2 表达式求值算术表达式、应用后缀表示计算表达式的值、中缀表达式转换为后缀表达式 3 栈和递归递归的概念、递归的方法、递归的举例、构成递归的条件 4 递归过程与递归工作栈递归工作栈在递归过程中的工作原理 5 队列 定义、抽象数据类型表示、操作(出队、入队)、循环队列、链式队列的实现。 队列的应用(杨辉三角形的打印) 6 优先级队列 概念、优先级队列的数组方式的实现 姜远 课堂教学
5 数组、串和广义表 1 作为抽象数据类型的数组数组的定义和初始化、一维数组、二维和多维数组、数组的顺序存储方式 2 特殊矩阵对称矩阵、三角矩阵、三对角矩阵等的压缩存储表示 3 稀疏矩阵稀疏矩阵的三元组存储表示和正交链表的存储表示形式和相关操作 4 字符串定义、抽象数据类型表示、部分成员函数的实现、模式匹配算法朴素的模式匹配算法和KMP算法 5 广义表概念、特性、表示、head和tail操作、存储实现、递归算法复制、判等、删除、建立等 姜远 课堂教学
6 树与二叉树 1 树和森林的概念定义、特点、术语 2 二叉树定义、性质及证明、举例 3 二叉树的表示顺序表示、链表表示、静态结构表示、实现 姜远 课堂教学
7 树与二叉树(续) 4 二叉树遍历 前序(中序、后序)遍历的递归实现和非递归实现、二叉树的建立、应用二叉树遍历的实例 5 线索化二叉树 概念、链表表示、中序(前序、后序)线索化二叉树、主要操作(求后继和前驱、建立线索化、插入、删除) 6 树与森林存储表示、树(森林)与二叉树的转换、树(森林)的遍历 姜远 课堂教学
8 树与二叉树(续) 7 堆定义、建立Filterdown调整算法、插入FilterUp调整算法、删除堆顶元素 8 Huffman树带权路径长度的概念、Huffman树、Huffman算法、Huffman编码 姜远 课堂教学
9 集合与字典 1 集合集合的基本表示(位向量、有序链表)、集合相关操作的实现 2 等价类与并查集确定等价类的算法、并查集的概念、并查集的主要操作及算法分析 3 字典字典的有序顺序表和有序链表表示、有序顺序表和有序链表中查找操作的实现 姜远 课堂教学
10 集合与字典(续) 4 散列 基本概念、散列函数(直接定址法、数字分析法、除留取余法、平方取中法、折叠法等)、处理冲突的方法(线性探查法、二次探查法、双散列法、链地址法)、散列表分析 姜远 课堂教学
11 搜索结构 1 静态搜索表搜索的概念、顺序搜索、折半搜索 2 二叉搜索树定义、三种基本操作(查找、插入、删除) 3 AVL树定义及性质、平衡化旋转、主要操作插入、删除、AVL树的高度 姜远 课堂教学
12 图 1 图的基本概念定义、有向图、无向图、完全图、邻接顶点、子图、路径、度、连通等 2 图的存储表示邻接矩阵、邻接表、邻接多重表 3 图的遍历与连通性 深度优先搜索算法、广度优先搜索算法连通分量、重连通分量的概念和相关算法 姜远 课堂教学
13 图(续) 4 最小生成树 Kruskal算法、Prim算法 5 最短路径 Dijkstra算法、Bellman and Ford算法、Floyd算法 姜远 课堂教学
14 图(续) 6 活动网络 AOV网拓扑排序、VOE网络关键路径 排序 1 基本概念排序、关键码、稳定性、算法分析(时间和空间开销) 2 插入排序直接插入排序、 折半插入排序、Shell排序 姜远 课堂教学
15 排序(续) 3 交换排序 冒泡排序、快速排序 4 选择排序直接选择、 锦标赛、堆排序 姜远 课堂教学
16 排序(续) 5 归并排序 2-路归并算法、迭代的归并排序算法、递归的归并排序算法 6 基数排序 基本思想、多关键码排序、链式基数排序 姜远 课堂教学
17 外部排序与外部搜索 1 静态索引结构 线性索引稠密和稀疏索引、m路静态搜索树 2 动态索引结构 动态的m路搜索树、B-树的基本概念、B-树的操作插入、删除、B+树 姜远 课堂教学
18 复习 全面复习前面所学习的知识点。讲解习题。 姜远 课堂教学

Some files were not shown because too many files have changed in this diff Show More