通过数据结构-Python语言描述课程的学习,使得学生从数据逻辑结构、存储结构和基本运算算法设计三个层面掌握基本的数据组织和数据处理方法,能够从问题出发设计面向数据结构的求解算法,并能够对算法进行时间复杂度与空间复杂度分析。为后续算法设计课程的学习打下基础。
通过讲授和上机实验,使学生了解数据结构的原理和特点。掌握线性表、栈和队列、串、树和二叉树、图、查找、内排序等基本数据结构及其相关算法的设计。具备较高水准的采用数据结构方法求解实际问题的能力。
第1模块绪论
什么是数据结构数据结构的定义数据的逻辑结构数据的存储结构数据的运算数据结构和数据类型算法及其描述什么是算法算法描述Python简介Python的标准数据类型列表的复制输入/输出和文件操作Python程序设计Python中变量的作用域和垃圾回收算法分析算法的设计目标算法的时间性能分析算法的存储空间分析数据结构的目标LeetCode在线编程题第2模块线性表
线性表的定义什么是线性表线性表的抽象数据类型描述线性表的顺序存储结构顺序表线性表的基本运算算法在顺序表中的实现顺序表的应用算法设计示例线性表的链式存储结构链表单链表单链表的应用算法设计示例双链表双链表的应用算法设计示例循环链表顺序表和链表的比较线性表的应用——两个多项式相加问题描述问题求解LeetCode在线编程题第3模块栈和队列
栈栈的定义栈的顺序存储结构及其基本运算算法的实现顺序栈的应用算法设计示例栈的链式存储结构及其基本运算算法的实现链栈的应用算法设计示例栈的综合应用队列队列的定义队列的顺序存储结构及其基本运算算法的实现循环队列的应用算法设计示例队列的链式存储结构及其基本运算算法的实现链队列的应用算法设计示例Python中的双端队列队列的综合应用优先队列LeetCode在线编程题第4模块串和数组
串串的基本概念串的存储结构串的模式匹配数组数组的基本概念特殊矩阵的压缩存储稀疏矩阵LeetCode在线编程题第5模块递归
什么是递归递归的定义何时使用递归递归模型递归与数学归纳法递归的执行过程Python中递归函数的参数递归算法的时空分析递归算法的设计递归算法设计的步骤基于递归数据结构的递归算法设计基于归纳方法的递归算法设计LeetCode在线编程题第6模块树和二叉树
树的定义树的逻辑结构表示方法树的基本术语树的性质树的基本运算树的存储结构二叉树二叉树的概念二叉树的性质二叉树的存储结构二叉树的递归算法设计二叉树的基本运算算法及其实现二叉树的先序、中序和后序遍历二叉树遍历的概念先序、中序和后序遍历的递归算法递归遍历算法的应用二叉树的层次遍历层次遍历的过程层次遍历算法的设计层次遍历算法的应用二叉树的构造由先序/中序序列或后序/中序序列构造二叉树序列化和反序列化线索二叉树线索二叉树的定义线索化二叉树遍历线索二叉树哈夫曼树哈夫曼树的定义哈夫曼树的构造算法哈夫曼编码二叉树与树、森林之间的转换树到二叉树的转换及还原森林到二叉树的转换及还原并查集并查集的定义并查集的实现LeetCode在线编程题第7模块图
图的基本概念图的定义图的基本术语图的存储结构邻接矩阵邻接表图的遍历图遍历的概念深度优先遍历广度优先遍历非连通图的遍历图遍历算法的应用深度优先遍历算法的应用广度优先遍历算法的应用生成树和最小生成树生成树和最小生成树的概念Prim算法Kruskal算法最短路径最短路径的概念Dijkstra算法Floyd算法拓扑排序什么是拓扑排序拓扑排序算法的设计AOE网和关键路径LeetCode在线编程题第8模块查找
查找的基本概念线性表的查找顺序查找折半查找索引存储结构和分块查找树表的查找二叉排序树平衡二叉树B树B+树哈希表的查找哈希表的基本概念哈希函数的构造方法哈希冲突的解决方法哈希表的查找及性能分析LeetCode在线编程题第9模块排序
排序的基本概念插入排序直接插入排序折半插入排序希尔排序交换排序冒泡排序快速排序选择排序简单选择排序堆排序堆数据结构归并排序自底向上的二路归并排序自顶向下的二路归并排序基数排序各种内排序方法的比较和选择外排序生成初始归并段的方法多路归并方法LeetCode在线编程题授课教师王梓楠,天津大学计算机专业,10年IT软件工程师背景,年开始从事信息学奥赛培训,主讲C++编程基础、面向对象程序设计、数据结构、算法设计、C++游戏创意编程、python编程基础、python游戏创意编程。王老师上课富有激情,严谨认真,算法功底深厚,讲课深入浅出,获得学生和家长的高度认可。
获奖学生
刘润宇,年北京市海淀区中小学生科技竞赛信息学奥林匹克比赛一等奖
白隽楚,年CCF举办CSP-J(原NOIP普及组)二等奖
授课方式Zoom直播在线授课,为保障学生在线学习的质量,采用小班授课,每班不超过8人。每个学生和老师都可以直接提问交流。
收费标准数据结构,每学时元,10次课一交费
联系人:王老师
计算机科学部落