CSCI204 数据结构
目录
| 关于
英文版
目录
::
0.
1.
如何使用本系统
»
第 0 章
前言
¶
0.1. 如何使用本系统
第 1 章
数据结构与算法课程导论
¶
1.1. 数据结构与算法
1.1.1. 数据结构与算法
1.1.1.1. 引言
1.1.1.2. 数据结构的哲学
1.1.1.3. 选择数据结构
1.1.1.4. 引言小结题
1.1.2. 一些软件工程主题
1.2. 抽象数据类型
1.2.1. 抽象数据类型
1.2.2. 概念图练习
1.2.3. 复习题
第 2 章
面向对象编程
¶
2.1. 面向对象程序设计导论
2.1.1. 面向对象程序设计导论
2.1.1.1. 面向对象程序设计的原则
2.1.1.2. 封装
2.1.1.3. 继承
2.1.1.4. 多态
2.1.1.5. 运行时多态
2.1.1.6. 编译时多态
2.1.1.7. 抽象
2.2. 统一建模语言
2.2.1. 统一建模语言
2.2.1.1. 静态图与动态图
2.2.1.2. 类图
2.3. 软件开发过程
2.3.1. 软件开发过程
2.3.1.1. 瀑布模型
2.3.1.2. 有理统一过程
2.3.1.3. 其他基于计划的方案
2.3.1.4. 极限编程(XP)
2.3.1.5. 晶体
2.3.1.6. Scrum
2.3.1.7. 特征驱动开发 (FDD)
第 3 章
数学基础
¶
3.1. 章节导论
3.2. 集合与关系
3.2.1. 集合记号
3.2.1.1. 关系
3.2.2. 等价关系
3.2.3. 偏序
3.3. 杂项数学记号
3.4. 对数
3.4.1. 对数
3.5. 求和引论
3.5.1. 求和
3.6. 递推关系引论
3.6.1. 递推关系
3.7. 数学证明技巧
3.7.1. 数学证明技巧
3.7.1.1. 直接证明
3.7.1.2. 反证法
3.7.1.3. 数学归纳证明
3.8. 估算引论
3.9. 章节小结题
3.9.1. 章节小结题
第 4 章
算法分析
¶
4.1. 章节引言
4.2. 问题、算法与程序
4.2.1. 问题、算法与程序
4.2.1.1. 问题
4.2.1.2. 算法
4.2.1.3. 程序
4.2.1.4. 小结
4.2.1.5. 小结题
4.3. 算法比较
4.3.1. 算法比较
4.3.1.1. 引言
4.3.1.2. 基本操作与输入规模
4.3.1.3. 增长率
4.3.2. 增长率排序练习
4.4. 最好、最坏与平均情况
4.4.1. 最好、最坏与平均情况
4.5. 更快的计算机,还是更快的算法?
4.5.1. 更快的计算机,还是更快的算法?
4.6. 渐近分析与上界
4.6.1. 渐近分析与上界
4.6.1.1. 上界
4.6.1.2. 简化规则
4.6.1.4. 小结
4.6.1.5. 练习题
4.7. 下界与
\(\Theta\)
记法
4.7.1. 下界与 Theta 记法
4.7.1.1. 下界
4.7.1.2. Theta 记法
4.7.1.3. 函数分类
4.7.1.4. 小结练习
4.8. 计算程序运行时间
4.8.1. 计算程序运行时间
4.8.1.1. 案例研究:两种查找算法
4.8.1.2. 二分查找练习
4.8.1.3. 分析二分查找
4.8.2. 摘要练习
4.9. 分析问题
4.9.1. 分析问题
4.10. 常见误解
4.10.1. 常见误解
4.11. 多个参数
4.12. 空间界
4.13. 代码调优与实验分析
4.13.1. 代码调优与实验分析
4.13.1.1. 实验分析
4.14. 算法分析总结练习
4.14.1. 总结练习:CS3
第 5 章
查找 I
¶
5.1. 在数组中查找
5.1.1. 在数组中查找
5.1.1.1. 顺序查找
5.1.1.2. 二分查找
第 6 章
线性结构
¶
6.1. 章节引言:线性表
6.2. 线性表 ADT
6.2.1. 线性表 ADT
6.2.1.1. 定义 ADT
6.2.2. 线性表 ADT 编程练习
6.3. 基于数组的线性表实现
6.3.1. 基于数组的线性表实现
6.3.1.1. 插入
6.3.1.2. 插入练习
6.3.2. 追加和移除
6.3.2.1. 移除练习
6.3.3. 基于数组的线性表练习题
6.4. 链表
6.4.1. 链表
6.4.1.1. 这种表示存在的问题
6.4.1.2. 更好的解决方案
6.4.1.3. 链表的实现
6.4.2. 链表的删除
6.5. 线性表实现的比较
6.5.1. 空间比较
6.5.2. 时间比较
6.5.2.1. 练习题
6.6. 双向链表
6.6.1. 双向链表
6.6.1.1. 插入
6.6.1.2. 追加
6.6.1.3. 删除
6.6.1.4. 前移
6.6.1.5. 指针的杂糅
6.7. 线性表元素的实现
6.7.1. 线性表元素的实现
6.7.1.1. 同质性
6.7.1.2. 元素的删除
6.7.1.3. 练习题
6.8. 栈
6.8.1. 栈的术语与实现
6.8.1.1. 基于数组的栈
6.8.2. 出栈
6.9. 链式栈
6.9.1. 链式栈实现
6.9.1.1. 链式栈压入
6.9.2. 链式栈出栈
6.9.2.1. 基于数组的栈与基于链表的栈比较
6.10. 空闲链表
6.10.1. 空闲链表
6.11. 实现递归
6.12. 队列
6.12.1. 队列术语与实现
6.12.1.1. 基于数组的队列
6.12.1.2. 环形队列
6.12.1.3. 基于数组的队列实现
6.12.2. 基于数组的队列实践
6.13. 链式队列
6.13.1. 链式队列
6.13.2. 链式队列出队
6.13.3. 基于数组的队列与链式队列的比较
6.13.3.1. 栈与队列小结题
6.14. 线性结构小结练习
6.14.1. 练习题
6.14.2. 章节复习题
第 7 章
递归
¶
7.1. 递归简介
7.1.1. 引言
7.2. 编写递归函数
7.2.1. 编写递归函数
7.3. 代码补全练习
7.3.1. 引言
7.3.2. 递归编程练习:最大值
7.3.3. 递归编程练习:乘法
7.3.4. 递归编程练习:最大公约数
7.3.5. 递归编程练习:对数
7.3.6. 递归编程练习:累加和
7.3.7. 递归编程练习:奇数值求和
7.3.8. 递归编程练习:各位数字之和
7.3.9. 递归编程练习:统计字符
7.4. 编写更复杂的递归函数
7.5. 中级递归代码补全练习
7.5.1. 递归编程练习:数组最小值
7.5.2. 递归编程练习:是否为逆序
7.5.3. 递归编程练习:十进制转二进制
7.6. 编写实践练习
7.6.1. 递归编程练习:叠炮弹
7.6.2. 递归编程练习:检查回文
7.6.3. 递归编程练习:子集和
7.6.4. 递归编程练习:帕斯卡三角
7.7. 跟踪递归代码
7.7.1. 跟踪递归代码
7.7.1.1. 多米诺骨牌类比
7.7.1.2. 汉诺塔
7.8. 递归代码跟踪练习
7.8.1. 前向信息流跟踪练习
7.8.2. 后向信息流跟踪练习
7.8.3. 查找错误跟踪练习
7.8.4. 两次递归调用跟踪练习
7.8.5. 调用次数跟踪练习
7.8.6. 较难跟踪练习
7.9. 递归总结练习题
7.9.1. 递归总结练习题
第 8 章
设计
¶
8.1. 设计模式
8.1.1. 设计模式
8.1.1.1. 享元
8.1.1.2. 访问者
8.1.1.3. 组合
8.1.1.4. 策略
8.1.1.5. 小结问题
8.2. 线性表 ADT 的替代设计
8.3. 记录的比较
8.3.1. 记录的比较
8.4. 字典 ADT
8.4.1. 字典 ADT
第 9 章
二叉树
¶
9.1. 二叉树章节简介
9.2. 二叉树
9.2.1. 定义与性质
9.2.2. 练习题
9.3. 二叉树作为递归数据结构
9.3.1. 二叉树作为递归数据结构
9.4. 满二叉树定理
9.5. 二叉树的遍历
9.5.1. 二叉树的遍历
9.5.1.1. 前序遍历
9.5.1.2. 后序遍历
9.5.1.3. 中序遍历
9.5.1.4. 实现
9.5.2. 后序遍历练习
9.5.3. 中序遍历练习
9.5.4. 总结练习
9.6. 实现树的遍历
9.6.1. 实现树的遍历
9.6.1.1. 基本情况
9.6.1.2. 递归调用
9.6.2. 二叉树结点值加一练习
9.7. 递归函数中的信息流
9.7.1. 递归函数中的信息流
9.7.1.1. 局部
9.7.1.2. 向下传递信息
9.7.2. 二叉树设置深度练习
9.7.3. 收集并返回
9.7.4. 二叉树校验和练习
9.7.5. 二叉树叶结点计数练习
9.7.6. 二叉树结点求和练习
9.7.7. 组合信息流
9.7.8. 二叉树检查值练习
9.7.9. 组合问题
9.7.10. 二叉树高度练习
9.7.11. 二叉树求差练习
9.7.12. 二叉树路径和存在性练习
9.8. 二叉树结点的实现
9.8.1. 二叉树结点的实现
9.9. 基于组合模式的表达式树
9.9.1. 基于组合模式的表达式树
9.10. 二叉树的空间需求
9.10.1. 二叉树的空间需求
9.11. 二叉搜索树
9.11.1. 二叉搜索树的定义
9.11.1.1. 二叉搜索树的查找
9.11.2. 二叉搜索树的插入
9.11.3. 二叉搜索树的删除
9.11.4. 二叉搜索树的分析
9.12. 使用 BST 实现字典
9.13. 二叉树引导式信息流
9.13.1. 二叉树引导式信息流
9.13.2. 二叉搜索树小计数练习
9.14. 多棵二叉树
9.14.1. 镜像二叉树练习
9.14.2. 相同二叉树练习
9.14.3. 结构相同二叉树练习
9.15. 一个困难的信息流问题
9.16. 完全二叉树的数组实现
9.16.1. 完全二叉树的数组实现
9.17. 堆与优先队列
9.17.1. 堆与优先队列
9.17.2. 构建堆
9.17.3. 从堆中删除元素或更新对象的优先级
9.17.4. 优先队列
9.18. 平衡树
9.19. AVL 树
9.20. 伸展树
9.21. 红黑树
9.21.1. 练习 1
9.21.2. 练习 2
9.22. 二叉树章节小结
9.22.1. 小结问题
第 10 章
排序
¶
10.1. 章简介:排序
10.2. 排序术语与记号
10.2.1. 排序术语与记号
10.3. 插入排序
10.3.1. 插入排序
10.3.2. 插入排序分析
10.4. 冒泡排序
10.4.1. 冒泡排序
10.4.2. 冒泡排序分析
10.5. 选择排序
10.5.1. 选择排序
10.5.2. 选择排序分析
10.5.3. 指针交换
10.6. 交换排序的成本
10.6.1. 交换排序的成本
10.6.2. 分析
10.7. 用代码调优优化排序算法
10.7.1. 简单排序算法的代码调优
10.8. 希尔排序
10.8.1. 希尔排序
10.8.2. 融会贯通
10.8.3. 希尔排序练习
10.8.4. 优化希尔排序
10.8.5. 希尔排序小结问题
10.9. 归并排序概念
10.9.1. 归并排序概念
10.9.2. 归并排序练习
10.10. 实现归并排序
10.10.1. 实现归并排序
10.11. 快速排序
10.11.1. 引言
10.11.2. 划分
10.11.3. 综合应用
10.11.4. 快速排序分析
10.12. 堆排序
10.12.1. 堆排序
10.12.2. 堆排序熟练度练习
10.12.3. 堆排序分析
10.13. 箱排序
10.13.1. 箱排序
10.14. 基数排序
10.14.1. 基数排序
10.14.2. 基于数组的基数排序
10.14.2.1. 基数排序分析
10.15. 排序算法的实验比较
10.15.1. 排序算法的实验比较
10.16. 排序的下界
10.16.1. 排序的下界
10.17. 排序小结练习
10.17.1. 排序小结练习
第 11 章
哈希
¶
11.1. 哈希简介
11.1.1. 引言
11.2. 哈希函数原理
11.2.1. 哈希函数原理
11.3. 哈希函数示例
11.3.1. 哈希函数示例
11.3.1.1. 简单取模函数
11.3.1.2. 分箱
11.3.1.3. 平方取中法
11.3.2. 一个简单的字符串哈希函数
11.3.3. 字符串折叠
11.3.4. 哈希函数练习
11.3.5. 哈希函数复习题
11.4. 开放哈希
11.4.1. 开放哈希
11.5. 桶哈希
11.5.1. 桶哈希
11.5.2. 另一种方法
11.6. 冲突解决
11.6.1. 冲突解决
11.6.1.1. 线性探测的问题
11.7. 改进的冲突解决
11.7.1. 按步长的线性探测
11.7.2. 伪随机探测
11.7.3. 二次探测
11.7.4. 双重哈希
11.8. 闭哈希分析
11.8.1. 闭哈希分析
11.9. 哈希删除
11.9.1. 删除
11.9.2. 哈希删除总结问题
11.10. 哈希章节总结练习
11.10.1. 哈希复习
第 12 章
图
¶
12.1. 章引论:图
12.1.1. 图的术语与实现
12.1.1.1. 图的表示法
12.1.2. 图术语问题
12.2. 图的实现
12.3. 图遍历
12.3.1. 图遍历
12.3.1.1. 深度优先搜索
12.3.2. 广度优先搜索
12.4. 最短路径问题
12.4.1. 最短路径问题
12.4.1.1. 单源最短路径
第 13 章
查找结构
¶
13.1. 跳表(Skip Lists)
13.1.1. 跳表
第 14 章
附录
¶
14.1. 术语表
14.2. 参考文献
索引
搜索页面
隐私 |
| 许可协议
目录
::
0.
1.
如何使用本系统
»
小结*:
操作系统*:
Windows
Mac OS
Linux
iOS
Android
Other
浏览器*:
Chrome
Safari
Internet Explorer
Opera
Other
描述*:
附加截图(可选):