- 在线播放
- 分集下载
- 【第01章:绪论●第01周】1.0:前言
- 1.1:数据结构研究
- 1.2:基本概念和术语1
- 1.2:基本概念和术语2
- 1.3:抽象数据类型的表示与实现
- 1.4:算法与算法分析1
- 1.4:算法与算法分析2
- 1.4:算法与算法分析3
- 1.4:算法与算法分析4
- 【第02章:线性表●第02周】1:线性表的定义和特点
- 2.2:案例引入
- 2.3:线性表的类型定义
- 2.4.1:线性表的顺序表示和实现1
- 2.4.1:线性表的顺序表示和实现2
- 2.4.1:线性表的顺序表示和实现3
- 2.4.2:类C语言有关操作补充1
- 2.4.2:类C语言有关操作补充2
- 2.4.3:顺序表中基本操作实现1——查找算法
- 2.4.3:顺序表中基本操作实现2——插入算法
- 2.4.3:顺序表中基本操作实现3——删除算法
- 2.4.4:顺序表小结
- 【第02章:线性表●第03周】2.5.0:链表概念
- 2.5.1:单链表的定义
- 2.5.2:单链表基本操作1——初始化和判断空表
- 2.5.2:单链表基本操作2——销毁单链表
- 2.5.2:单链表基本操作3——清空单链表
- 2.5.2:单链表基本操作4——求单链表的表长
- 2.5.2:单链表基本操作5——取第i个元素值
- 2.5.2:单链表基本操作6——按值查找
- 2.5.2:单链表基本操作7——插入节点
- 2.5.2:单链表基本操作8——删除节点
- 2.5.2:单链表基本操作9——查找插入删除算法分析
- 2.5.2:单链表基本操作10——头插法建立链表
- 2.5.2:单链表基本操作11——尾插法建立链表
- 【第02章:线性表●第04周】2.5.3:循环链表1
- 2.5.3:循环链表2——两个链表合并
- 2.5.4:双向链表1
- 2.5.4:双向链表2——双向链表的插入操作
- 2.5.4:双向链表3——双向链表的删除操作
- 2.5.5:单链表、循环链表、双向链表的比较
- 2.6:顺序表和链表的比较
- 2.7.1:线性表的应用1——线性表的合并
- 2.7.2:线性表的应用2——顺序表实现有序表合并
- 2.7.2:线性表的应用3——链表实现有序表合并
- 2.8:案例分析与实现1——多项式运算
- 2.8:案例分析与实现2——稀疏多项式运算
- 2.8:案例分析与实现3——图书信息管理
- 【第03章:栈、队列●第05周】3.1.0:栈和队列介绍
- 3.1.1:栈的定义和特点
- 3.1.2:队列的定义和特点
- 3.2:案例引入
- 3.3.1:栈的抽象数据类型定义
- 3.3.2:栈的顺序表示和实现1——栈的顺序表示
- 3.3.2:栈的顺序表示和实现2——顺序栈操作1
- 3.3.2:栈的顺序表示和实现2——顺序栈操作2
- 3.3.2:栈的顺序表示和实现2——顺序栈操作3
- 3.3.3:链栈表示和实现
- 3.4:栈和递归
- 3.5.1:队列的类型定义
- 3.5.2:队列的顺序表示和实现1
- 3.5.2:队列的顺序表示和实现2
- 3.5.3:队列的链式表示和实现
- 【第04章:串、数组、广义表●第06周】4.1:串的定义
- 4.2:案例引入
- 4.3.1+2:串的类型定义、存储结构
- 4.3.3:串的匹配算法1——BF算法
- 4.3.3:串的匹配算法2——KMP算法
- 4.4.1.1:数组的定义及特点
- 4.4.1.2:数组的抽象类型定义
- 4.4.2:数组的顺序存储
- 4.4.3:特殊矩阵的压缩存储1——对称矩阵
- 4.4.3:特殊矩阵的压缩存储2——三角矩阵、对角矩阵
- 4.4.3:特殊矩阵的压缩存储3——稀疏矩阵
- 4.5:广义表
- 4.6:案例分析与实现
- 【第05章:树、二叉树●第07周】5.1.1:树的定义
- 5.1.2:树的基本术语
- 5.1.3:二叉树的定义
- 5.2:案例引入
- 5.3:树和二叉树的抽象数据类型定义
- 5.4.1.1:二叉树性质1、2、3
- 5.4.1.2:满二叉树和完全二叉树
- 5.4.1.3:二叉树性质4、5
- 5.4.2:二叉树的存储结构1——顺序存储结构
- 5.4.2:二叉树的存储结构2——链式存储结构
- 5.5.1.1:遍历二叉树
- 5.5.1.2:由遍历序列确定二叉树
- 【第05章:树、二叉树●第08周】5.5.1.3:先序递归遍历算法
- 5.5.1.4:递归遍历算法及分析
- 5.5.1.5:中序非递归算法
- 5.5.1.6:层次遍历算法
- 5.5.1.7:二叉树的遍历算法应用1——建立二叉树算法
- 5.5.1.7:二叉树的遍历算法应用2——复制、求结点数、求叶子结点数
- 5.5.2:线索二叉树
- 5.6.1:树的存储结构1——双亲表示法
- 5.6.1:树的存储结构2——孩子链表
- 5.6.1:树的存储结构3——孩子兄弟表示法
- 5.6.2.1:树与二叉树的转换
- 5.6.2.2:森林与二叉树的转换
- 5.6.3:树和森林的遍历
- 【第05章:树、二叉树●第09周】5.7.0:引子
- 5.7.1:哈夫曼树的基本概念
- 5.7.2:哈夫曼树的构造算法1
- 5.7.2:哈夫曼树的构造算法2——哈夫曼树算法实现
- 5.7.3:哈夫曼编码1——哈夫曼编码思想
- 5.7.3:哈夫曼编码2——哈夫曼编码的算法实现
- 5.7.3:哈夫曼编码3——文件的编码和译码
- ———【第06章:图】6.1.1:图的定义
- 6.1.2:图的基本术语
- 6.2:案例引入
- 6.3:图的类型定义
- 【第06章:图●第10周】6.4.1:邻接矩阵表示法1——无向图的邻接矩阵
- 6.4.1:邻接矩阵表示法2——有向图和网的邻接矩阵
- 6.4.1:邻接矩阵表示法3——创建无向网
- 6.4.1:邻接矩阵表示法4——邻接矩阵表示法优缺点
- 6.4.2:邻接表表示法1——无向图的邻接表
- 6.4.2:邻接表表示法2——有向图的邻接表
- 6.4.2:邻接表表示法3——建立邻接表的算法
- 6.4.2:邻接表表示法4——邻接表表示法优缺点及与邻接矩阵的关系
- 6.4.3:十字链表
- 6.4.4:邻接多重表
- 6.5.1.1:深度优先搜索遍历思想
- 6.5.1.2:邻接矩阵上的遍历算法
- 6.5.1.3:邻接表上的遍历算法及算法分析
- 6.5.2:广度优先搜索遍历及其实现
- 【第06章:图●第11周】6.6.1:最小生成树1——生成树及其构造
- 6.6.1:最小生成树2——最小生成树及其典型应用
- 6.6.1:最小生成树3——MST性质
- 6.6.1:最小生成树4——Prim算法
- 6.6.1:最小生成树5——Kruskal算法
- 6.6.2:最短路径1——最短路径问题抽象
- 6.6.2:最短路径2——Dijkstra算法
- 6.6.2:最短路径3——Floyd算法
- 6.6.3:拓扑排序
- 6.6.4:关键路径1——用AOE网表示工程计划
- 6.6.4:关键路径2——求解关键路径
- 【第07章:查找●第12周】7.1:查找的基本概念
- 7.2.1:顺序查找1——顺序查找算法
- 7.2.1:顺序查找2——顺序查找算法分析
- 7.2.2:折半查找1——折半查找算法
- 7.2.2:折半查找2——折半查找算法分析
- 7.2.3:分块查找1——分块查找算法
- 7.2.3:分块查找2——分块查找算法分析及比较
- 7.3.1:二叉排序树1——二叉排序树定义
- 7.3.1:二叉排序树2——二叉排序树查找递归算法
- 7.3.1:二叉排序树3——二叉排序树查找算法分析
- 7.3.1:二叉排序树4——二叉排序树的插入和生成
- 7.3.1:二叉排序树5——二叉排序树的删除
- 【第07章:查找●第13周】7.3.2.1:平衡二叉树的定义
- 7.3.2.2:平衡调整方法
- 7.3.2.3:四种类型的平衡调整
- 7.3.2.4:平衡调整例题
- 7.4.1:散列表的基本概念
- 7.4.2:散列函数的构造
- 7.4.3.1:开地址法1——线性探测法
- 7.4.3.1:开地址法2——二次探测法、伪随机探测法
- 7.4.3.2:链地址法
- 7.4.4:散列表的查找及性能分析
- 【第08章:排序●第14周】8.1:排序概述
- 8.2.1:插入排序——直接排序
- 8.2.2:插入排序——折半排序
- 8.2.3:插入排序——希尔排序
- 8.3.1:交换排序——冒泡排序
- 8.3.2:交换排序——快速排序
- 8.3.3:交换排序——快速排序算法分析
- 8.4.1:选择排序——简单排序
- 8.4.3.1:选择排序——堆排序
- 8.4.3.2:选择排序——堆调整
- 8.4.3.3:选择排序——建立堆
- 8.4.3.4:选择排序——堆排序算法及分析
- 8.5:归并排序
- 8.6:基数排序
- 8.8:各种排序方法比较
数据结构与算法的相关介绍
数据结构不仅仅是计算机专业的教学计划中的核心课程之一,而且是其它非计算机专业的主要选修课程之一。认真学习这门课程,大家可以全面掌握各种数据结构的特点、存储表示、运算方法以及在计算机科学中最基本的应用。 参考教材《数据结构 C语言版 第2版 严蔚敏》人民邮电出版社;
数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。数据结构往往同高效的检索算法和索引技术有关。
一般认为,一个数据结构是由数据元素依据某种逻辑联系组织起来的。对数据元素间逻辑关系的描述称为数据的逻辑结构;数据必须在计算机内存储,数据的存储结构是数据结构的实现形式,是其在计算机内的表示;此外讨论一个数据结构必须同时讨论在该类数据上执行的运算才有意义。一个逻辑数据结构可以有多种存储结构,且各种存储结构影响数据处理的效率。
在许多类型的程序的设计中,数据结构的选择是一个基本的设计考虑因素。许多大型系统的构造经验表明,系统实现的困难程度和系统构造的质量都严重的依赖于是否选择了最优的数据结构。许多时候,确定了数据结构后,算法就容易得到了。有些时候事情也会反过来,我们根据特定算法来选择数据结构与之适应。不论哪种情况,选择合适的数据结构都是非常重要的。选择了数据结构,算法也随之确定,是数据而不是算法是系统构造的关键因素。这种洞见导致了许多种软件设计方法和程序设计语言的出现,面向对象的程序设计语言就是其中之一。