数据结构与算法是计算机类专业的专业技术基础课程、核心课程,也是其他爱好编程同学必学的一门专业基础课程。它所讨论的知识内容和提倡的技术方法,无论对进一步学习计算机领域的其它课程,还是对从事软件工程的开发,都有着不可替代的作用。
课程主要介绍如何合理地组织数据、有效的存储和处理数据,正确的设计算法以及对算法的分析和评价。通过本课程的学习,要求学生掌握根据各类实际问题,归纳、抽象出数据对象的数据特征及对象间的相互联系,选择合适的数据组织方法和存储方法,设计并实现高效的求解算法。本课程首先综述数据、数据结构和抽象数据类型等基本概念,再从数据类型的角度,分别讨论线性表、栈、队列、串、数组、广义表、树和二叉树以及图等基本类型的数据结构及其应用;以及从时间上进行定性和定量的分析和比较了各种查找和排序方法。课程学习的基本数据结构及相关算法是程序设计的基础,培养学生基本的、良好的程序设计技能,为后续专业课程的学习打下坚实的基础。
课程针对实践性强的特点,由简入繁循序渐进的带领学生一行一行实现算法,例题中针对问题描述,分析问题,得出解决方案,到代码的实现,展现完整的过程,让同学们一步一台阶跨上去,达到解决复杂问题的高度。课程配合在线编程题型的作业及客观题型的测试,从实践和理论两个维度进行过程性评测。
第一章 绪论
1.1 什么是数据结构?如何学习数据结构?(09:36)
1.2 算法的定义、描述及分析(15:24)
第一章 绪论单元测验
第二章 - 顺序表
2.1 顺序表的表示及定义(07:09)
2.2 顺序表的基本操作(08:20)
第二章 链表及实例应用
2.3 链表定义及建立(10:49)
2.4 链表基本操作(7:32)
2.5 循环链表及双向链表(14:11)
2.6 线性表应用举例(5:34)
2.7 应用举例 -约瑟夫及多项式求和(9:55)
第二章 线性表单元测验
第三章 栈和队列—— 栈的定义及其应用
3.1 栈的表示与实现(07:54)
3.2 栈的应用(数制转换及括弧匹配09:10,表达式计算09:26)
第三章 栈和队列——队列的定义及其实现
3.3 队列的表示与实现(07:56)
第三章 栈和队列单元测试
第四章 串
4.1 串的定义与实现(09: 26)
4.2 串的模式匹配(BF算法 05:17,KMP算法08:10)
第四章 串单元测验
第五章 数组和广义表
5.1 数组与矩阵的压缩存储(09:44)
5.2 稀疏矩阵的转置.(06:40)
5.3 广义表的表示(07:34)
第五章 数组与广义表单元测验
第六章 树与二叉树(一)
6.1 树的定义及术语(07:22)
6.2 二叉树及其性质(10:22)
6.3 遍历二叉树(递归方法10:12,非递归方法09:40)
第六章 树与二叉树(二)
6.4 线索二叉树&树与森林(10:52)
6.5 哈夫曼树及其应用(哈夫曼树及哈夫曼编码07:51,算法实现09:04 )
第六章 树与二叉树 单元测验
第七章 图(一)
7.1 图的基本概念(08:23)
7.2 图的表示和实现(09:27)
7.3 图的遍历(09:43)
第七章 图(二)
7.4.1 最小生成树-Prim算法(11:04)
7.4.2 最小生成树-Kruskal算法(09:46)
7.4.3 单源点最短路径Dijkstra算法(11:36)
7.4.4 所有顶点间的最短路径Floyd算法(10:17)
7.4.5 拓扑排序(11:37)
7.4.6 关键路径(11:12)
第七章 图 单元测验
第八章 查找(线性查找、二叉排序树)
8.1 线性查找(09:08)
8.2 树表查找-二叉排序树(08:56)
第八章 查找(平衡二叉树、哈希查找)
8.3 树表查找-平衡二叉树(11:17)
8.4 哈希查找(13:54)
第九章 排序(排序定义、直接插入排序、选择排序、希尔排序)
9.1 排序定义及简单排序
第九章 排序(冒泡排序、快速排序、堆排序、归并排序、基数排序)
9.2 交换类排序(冒泡排序、快速排序)
9.3 堆排序
9.4 归并排序和基数排序