新学期,再度起程!
翻转的数据结构课程再度迎来新的一批同学。
前两年,资源建设基本完备,课堂方案逐渐完善,同学们对新型的学习方式设计给予了肯定(参见2014级问卷调查和2015级学生总结)。
针对2016级的教学,重点之一是完善课堂方案,让课堂成为第二周一次的催化剂,以课堂活动为核心,让学习更有效。这重中之重,便是小组合作,学习小组不仅在课堂起作用,而且要延伸到整个学习过程。
重点之二,是减轻学习负担。仗着数据结构课是计算机科学与技术专业最重要的专业基础课,前两届的学生跟着我,能够每周投入10小时以上的时间学习,同学们也基本能按要求去做,总体上也不超5×8小时的“工作时间”。但在这一方面,想做点努力,让同学们少花些时间,提高核心能力。
少说多干。本文将提供2016级全体同学的博客链接,以及有关实践环节的学习资料链接。
1.孙仁圆 朱坤昂 张俊杰 杨合进 王百琛 张 行
2.王雪行 于 琛 李浩南 常 路 黎兆阳 刘泽齐
3.张 帅 李 恩 姬长水 周月庆 申正阳 安 凯
4.刘思源 贾存钰 刘 涛 张延飞 宋 昊 李家年
5.李首言 李金朴 刘照京 任泽西 范宝磊 王效杰
6.杜昕晔 李琳汐 尹 娜 潘亚楠 李 潇 徐潇雨
7.黄潇慧 白苗苗 薛瑞琪 于子淇 孙铭馨 张翠平
8.李庆耀 邵雪源 陈军正 葛慧文 张思琦 何文洁
9.马明祥 于 嵩 李小同 王长青 王华慧 李佳骏
10.侯成健 赵楷文 张庆彪 田长航 张 昕 张文畅
11.高 晶 臧云鹏 李 哲 刘 浩 胡俊超 李英荣
12.岳增强 王万兴 黄士胜 王 硕 胡德杰 盛 凯
13.李欣豪 张雨萌 武美妤 董丽娟 尚文哲 刘文平
14.王铭泽 于 涵 冯 圆 吴玉然 高兆港 董玉祥
第1周 学习改革准备活动
第2周 数据结构概述
1. 关于数据结构课程 16:49
2. 什么是数据结构 13:15
3. 数据的逻辑结构及类型 19:29
4. 抽象数据类型 14:13
5. 算法及其描述 17:08
6. 算法复杂度概念 22:15
7. 算法分析实例 12:16 【补充例题】
8. 算法与数据结构 14:56
课后上机实践:第2周 数据结构、算法、程序设计
第3周 线性表(1)——顺序表
课后上机实践及参考:第3周 线性表(一)——顺序存储结构
第4周 线性表(2)——链表
8.线性表的链式存储 12:19
9. 建立单链表 16:30 [例程]
10. 单链表基本操作的实现 18:59 [算法库]
11. 单链表应用举例 24:12 [例程]
12. 双链表 19:36 [算法库]
13. 循环链表 6:23 [算法库: 循环单链表] [算法库: 循环双链表]
14. 线性表的应用 27:10 [例程]
15. 有序表 15:13 [例程]
课后上机实践及参考:第4周 线性表(二)——链表
[拓展:C++标准模板库与数据结构]
第5周 栈和队列(1)——栈
1. “栈和队列”导学 9:23
2. 栈的定义 9:56
3. 栈的顺序存储结构及其基本运算实现 14:15 [算法库]
4. 栈的链式存储结构及其基本运算的实现 6:39 [算法库]
5. 栈的应用1-表达式求值 31:23 [例程]
6. 栈的应用2-迷宫问题 19:48 [例程]
课后上机实践及参考:第5周 栈和队列(一)——栈
补充应用案例:栈结构用于8皇后问题的回溯求解
第7周 栈和队列(2)——队列
7. 队列的定义 5:46
8. 顺序队的存储及基本操作 12:24
9. 环形队列的存储及基本操作 21:00 [算法库]
10. 队列的链式存储结构及其基本运算的实现 17:07 [算法库]
11. 队列的应用-迷宫问题 21:39 [例程]
12. 双端队列 5:04
课后上机实践及参考:第7周 栈和队列(二)——队列
(为保证学习的完整性,保留所有的学习内容。因学时原因压缩内容,所以,按学习方案指导,优先完成必学内容。)
第8周(1) 串
1. 串的基本概念及导学 11:09 [自测]
2. 串的顺序存储及其基本操作实现 26:09 [算法库]
3. 串的顺序存储应用 12:53 [例程]
4. (选学)串的链式存储及其基本操作实现 21:58 [算法库] [自测]
5. 串的模式匹配(Brute-Force算法) 16:15 [例程]
6. (选学)串的模式匹配(KMP算法) 33:20 [例程] [自测]
课后上机实践及参考:第8周(1) 串
第8周(2) 数组与广义表
1. 数组的基本概念与存储结构 22:06 [自测]
2. 特殊矩阵的压缩存储 31:56 [例程] [自测]
3. 稀疏矩阵的三元组表示 26:41 [算法库] [自测]
4. (选学)稀疏矩阵的十字链表表示 28:33 [例程]
5. (选学)广义表 13:58 [自测]
6. (选学)广义表的存储结构及基本运算的实现 30:40 [算法库]
课后上机实践及参考:第8周(2) 数组与广义表
第9周 树和二叉树(1)
1 树结构导学 6:19
2 树的基本概念 18:04
3 树的基本术语 7:41
4 树的性质 14:59
5 树的存储结构 13:33 [例程]
6 二叉树概念和性质 18:02
7 二叉树与树、森林之间的转换 12:13
8 二叉树的存储结构 9:21
9 二叉树的基本运算及其实现 29:18 [算法库]
10 二叉树的遍历 18:42 [例程(算法)] [例程(应用)]
课后上机实践及参考:第9周 树和二叉树(一)
第10周 树和二叉树(2)
11 二叉树遍历非递归算法 23:04 [例程]
12 层次遍历算法 10:05 [例程] [例程(应用)]
13 二叉树的构造 24:23 [例程]
14 线索二叉树 21:41 [例程]
15 哈夫曼树 29:24 [例程]
课后上机实践及参考:第10周 树和二叉树(二)
第11周 图(1)
1. 图结构导学 12:16
2. 图的定义 7:34
3. 图的基本术语 21:22
4. 图的邻接矩阵存储结构及算法 16:55 [例程]
5. 图的邻接表存储结构及算法 22:52 [算法库]
6. 图的遍历 24:05 [例程]
7. 非连通图的遍历 7:55 [例程]
8. DFS(深度优先搜索)的应用 21:27 [例程]
9. BFS(广度优先搜索)的应用 12:12 [例程]
课后上机实践及参考:第11周 图的基本运算和遍历
第12周 图(2)
10.生成树的概念 13:10
11.最小生成树的普里姆算 26:36 [例程]
12.最小生成树的克鲁斯卡尔算法 18:16[例程]
13.从一个顶点到其余各顶点的最短路径 34:15 [例程]
14.每对顶点之间的最短路径 22:15[例程]
15.拓扑排序 15:39[例程]
16.AOE网与关键路径 19:15
课后上机实践及参考:第13周 最短路径和拓扑序列
第13周 查找(1)
1.查找问题导学 13:31
2.线性表的顺序查找 7:52 [例程]
3.线性表的折半查找 20:05 [例程]
4.索引存储结构 5:26
5.分块查找 20:32 [例程]
6.二叉排序树 22:58
7.二叉排序树(续) 12:03 [例程]
8.平衡二叉树 32:56 [例程]
课后上机实践及参考:第13周 查找(一)
第14周 查找(2)和内部排序(1)
9. B-树 29:01
10. B+树 5:491
11. 哈希表——散列结构 29:38
12. 哈希表的运算 27:40 [例程]
课后上机实践及参考: 第14周 查找(2)
课后上机实践及参考: 第14周 内部排序(1) (并入15周部分)
第15周 内部排序(二)
4. 交换排序之冒泡排序 16:22 [例程]
5. 交换排序之快速排序 20:13 [例程]
6. 选择排序之直接选择排序 10:06 [例程]
7. 选择排序之堆排序 22:18 [例程] [补充示例]
8. 归并排序 18:08 [例程]
9. 简单的计数排序 8:33 [例程]
10. 基数排序 20:06 [例程]
11. 各种排序的比较 8:39
课后上机实践及参考: 第15周 内部排序 (含14周内部排序部分)
【自选扩展部分】
扩展一:外部排序
1.外排序概述7:27
2. 磁盘排序12:36
3. 多路平衡归并25:53[例程]
4. 初始归并段的置换-选择排序算法13:07[例程]
5. 最佳归并树 12:19
6. 磁带多路平衡归并排序 14:05
7. 磁带多阶段归并排序 14:27
上机实践及参考: 外部排序模拟
扩展二:文件
1 文件的基本概念16:27
2 顺序文件11:18
3 索引文件13:37 [例程]
4 ISAM索引文件18:16
5 VSAM索引文件10:25
6 哈希文件11:16
7 多关键字文件11:30
8 课程结语 7:04
上机实践及参考: 文件模拟