- 1_1.1.1 关于数据组织-例_图书摆放
- 2_1.1.2 关于空间使用-例_PrintN函数实现
- 3_1.1.3 关于算法效率-例_计算多项式值
- 4_1.1.4 抽象数据类型
- 5_1.2.1 算法的定义
- 6_1.2.2 什么是好的算法
- 7_1.2.3 复杂度的渐进表示
- 8_1.3.1 应用实例-算法1 & 2
- 9_1.3.2 应用实例-算法3
- 10_1.3.3 应用实例-算法4
- 11_“中国高校计算机大赛-团体程序设计天梯赛”酷炫视频
- 12_2.1.1 引子_多项式表示
- 13_2.1.2 线性表及顺序存储
- 14_2.1.3 顺序存储的插入和删除
- 15_2.1.4 链式存储及查找
- 16_2.1.5 链式存储的插入和删除
- 17_2.1.6 广义表与多重链表
- 18_2.2.1 什么是堆栈
- 19_2.2.2 堆栈的顺序存储实现
- 20_2.2.3 堆栈的链式存储实现
- 21_2.2.4 堆栈应用_表达式求值
- 22_2.3.1 队列及顺序存储实现
- 23_2.3.2 队列的链式存储实现
- 24_2.4 多项式的加法运算实现
- 25_1.题意理解与多项式表示
- 26_2.程序框架及读入多项式
- 27_3.加法、乘法运算及多项式输出
- 28_3.1.1 引子(顺序查找)
- 29_3.1.2 引子(二分查找例子)
- 30_3.1.3 引子(二分查找实现)
- 31_3.1.4 树的定义和术语
- 32_3.1.5 树的表示
- 33_3.2.1 二叉树的定义及性质
- 34_3.2.2 二叉树的存储结构
- 35_3.3.1 先序中序后序遍历
- 36_3.3.2 中序非递归遍历
- 37_3.3.3 层序遍历
- 38_3.3.4 遍历应用例子
- 39_1.题意理解及二叉树表示
- 40_2.程序框架、建树及同构判别
- 41_4.1.1 二叉搜索树及查找
- 42_4.1.2 二叉搜索树的插入
- 43_4.1.3 二叉搜索树的删除
- 44_4.2.1 什么是平衡二叉树
- 45_4.2.2 平衡二叉树的调整
- 46_1.题意理解及搜索树表示
- 47_2.程序框架及建树
- 48_3.搜索树是否一样的判别
- 49_线形结构习题.1 什么是抽象的链表
- 50_线形结构习题.2 链表逆转算法
- 51_线性结构习题.3 测试数据
- 52_5.1.1 什么是堆
- 53_5.1.2 堆的插入
- 54_5.1.3 堆的删除
- 55_5.1.4 堆的建立
- 56_5.2.1 什么是哈夫曼树
- 57_5.2.2 哈夫曼树的构造
- 58_5.2.3 哈夫曼编码
- 59_5.3.1 集合的表示及查找
- 60_5.3.2 集合的并运算
- 61_堆中的路径
- 62_小白-FT.1 集合的简化表示
- 63_小白-FT.2 题意理解与TSSN的实现
- 64_小白-FT.3 按秩归并
- 65_小白-FT.4 路径压缩
- 66_6.1.1 什么是图-定义
- 67_6.1.2 什么是图-邻接矩阵表示法
- 68_6.1.3 什么是图-邻接表表示法
- 69_6.2.1 图的遍历-DFS
- 70_6.2.2 图的遍历-BFS
- 71_6.2.3 图的遍历-为什么需要两种遍历
- 72_6.2.4 图的遍历-图不连通怎么办
- 73_6.3 应用实例_拯救007
- 74_6.4 应用实例_六度空间
- 75_小白-BG.1 邻接矩阵表示的图结点的结构
- 76_小白-BG.2 邻接矩阵表示的图-初始化
- 77_小白-BG.3 邻接矩阵表示的图-插入边
- 78_小白-BG.4 邻接矩阵表示的图-建立图
- 79_小白-BG.5 邻接表表示的图结点的结构
- 80_小白-BG.6 邻接表表示的图-建立图
- 81_树习题-TTA.1 题意理解
- 82_树习题-TTA.2 核心算法
- 83_树习题-CBST.1 数据结构的选择
- 84_树习题-CBST.2 核心算法
- 85_树习题-CBST.3 计算左子树的规模
- 86_树习题-HC.1 题意理解
- 87_树习题-HC.2 计算最优编码长度
- 88_树习题-HC.3 检查编码
- 89_7.1.1 概述
- 90_7.1.2 无权图的单源最短路
- 91_7.1.2-s 无权图的单源最短路示例
- 92_7.1.3 有权图的单源最短路
- 93_7.1.3-s 有权图的单源最短路示例
- 94_7.1.4 多源最短路算法
- 95_小白-HP.1题意理解
- 96_小白-HP.2 程序框架搭建
- 97_小白-HP.3 选择动物
- 98_小白-HP-4 模块的引用与裁剪
- 99_8.1.1 Prim算法
- 100_8.1.2 Kruskal算法
- 101_8.2.1 拓扑排序
- 102_8.2.2 关键路径
- 103_图习题.1 核心算法
- 104_图习题.2 其他推广
- 105_9.1.1 概述
- 106_9.1.2 冒泡排序
- 107_9.1.3 插入排序
- 108_9.1.4 时间复杂度下界
- 109_9.2 希尔排序
- 110_9.3.1 选择排序
- 111_9.3.2 堆排序
- 112_9.4.1 有序子列的归并
- 113_9.4.2 递归算法
- 114_9.4.3 非递归算法
- 115_10.1.1 算法概述
- 116_10.1.2 选主元
- 117_10.1.3 子集划分
- 118_10.1.4 算法实现
- 119_10.2.1 算法概述
- 120_10.2.2 物理排序
- 121_10.3.1 桶排序
- 122_10.3.2 基数排序
- 123_10.3.3 多关键字的排序
- 124_10.4 排序算法的比较
- 125_11.1.1 引子_散列的基本思路
- 126_11.1.2 什么是散列表
- 127_11.2.1 数字关键词的散列函数构造
- 128_11.2.2 字符串关键词的散列函数构造
- 129_11.3.1 开放定址法
- 130_11.3.2 线性探测
- 131_11.3.3 线性探测—字符串的例子
- 132_11.3.4 平方探测法
- 133_11.3.5 平方探测法的实现
- 134_11.3.6 分离链接法
- 135_11.4 散列表的性能分析
- 136_11.5 文件中单词词频统计
- 137_小白-PM.1题意理解与解法分析
- 138_小白-PM.2 程序框架搭建
- 139_小白-PM.3 输出狂人
- 140_小白-PM-4 模块的引用与裁剪
- 141_习题-IOM.1 插入排序的判断
- 142_习题-IOM.2 归并段的判断
- 143_习题-SWS.1 环的分类
- 144_习题-SWS.2 算法示例
- 145_习题-HHV 算法思路概述
“数据结构”是计算机科学与技术专业、软件工程专业甚至于其它电气信息类专业的重要专业基础课程。它所讨论的知识内容和提倡的技术方法,无论对进一步学习计算机领域的其它课程,还是对从事大型信息工程的开发,都是重要而必备的基础。
程序设计解决问题往往有多种方法,且不同方法之间的效率可能相差甚远。程序的时间和空间效率,不仅跟数据的组织方式有关,也跟处理流程的巧妙程度有关。本课程将介绍并探讨有关数据组织、算法设计、时间和空间效率的概念和通用分析方法,帮助学员学会数据的组织方法和一些典型算法的实现,能够针对问题的应用背景分析,选择合适的数据结构,从而培养高级程序设计技能。
注意:本课程只涉及最基础的数据结构和与之关联的最基本的算法,更多更复杂的数据结构和经典的解决优化问题的算法,将在后续课程中介绍。
本课程的特点是,对每一种重要的经典数据结构,我们都会从实际应用问题出发,导出其定义、实现(存储)方法以及操作实现,并以更丰富的综合应用案例和练习题帮助学员增强对理论的感性认识,从而明白这些数据结构为什么存在以及在什么情况下可以最好地解决什么样的问题。为了兼顾起点不同的学员,课程中特意设计了“小白专场”系列,手把手教授如何将解决问题的抽象算法用具体的代码实现,从而引导初学者更好地入门。