CS352 数据结构
目录
| 关于
英文版
目录
::
0.
1.
如何使用本系统
»
第 0 章
前言
¶
0.1. 如何使用本系统
第 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. 复习题
1.3. 面向对象程序设计导论
1.3.1. 面向对象程序设计导论
1.3.1.1. 面向对象程序设计的原则
1.3.1.2. 封装
1.3.1.3. 继承
1.3.1.4. 多态
1.3.1.5. 运行时多态
1.3.1.6. 编译时多态
1.3.1.7. 抽象
1.4. 统一建模语言
1.4.1. 统一建模语言
1.4.1.1. 静态图与动态图
1.4.1.2. 类图
1.5. 软件开发过程
1.5.1. 软件开发过程
1.5.1.1. 瀑布模型
1.5.1.2. 有理统一过程
1.5.1.3. 其他基于计划的方案
1.5.1.4. 极限编程(XP)
1.5.1.5. 晶体
1.5.1.6. Scrum
1.5.1.7. 特征驱动开发 (FDD)
1.6. 章节引言:线性表
1.7. 线性表 ADT
1.7.1. 线性表 ADT
1.7.1.1. 定义 ADT
1.7.2. 线性表 ADT 编程练习
1.8. 基于数组的线性表实现
1.8.1. 基于数组的线性表实现
1.8.1.1. 插入
1.8.1.2. 插入练习
1.8.2. 追加和移除
1.8.2.1. 移除练习
1.8.3. 基于数组的线性表练习题
第 2 章
第 2 单元
¶
2.1. 指针章简介
2.2. 基础参考资料 第 1 部分
2.2.1. 指针与引用
2.2.1.1. 什么是指针?
2.2.1.2. 什么是指针?
2.2.2. Java 中的数据类型
2.2.3. 引用与解引用
2.2.4. changePointeeDataDirect
2.2.5. Employee 类
2.2.6. 引用赋值
2.2.7. circularList1
2.3. 基本引用 部分 2
2.3.1. 共享
2.3.2. 浅拷贝与深拷贝
2.3.2.1. 复制意味着什么?
2.3.3. 浅比较与深比较
2.3.4. 指针
2.3.4.1. 为什么指针错误如此常见?
2.4. 指针语法
2.4.1. 语法
2.4.1.1. 声明引用变量
2.4.1.2. 将指针赋值给引用
2.4.1.3. 解引用该指针
2.4.1.4. 示例参考代码
2.4.2. changeHeadPointer1
2.4.2.1. 引用规则总结
2.4.3. Java 引用与指针
2.4.4. 机器中是如何实现引用的?
2.5. 局部内存
2.5.1. 局部内存
2.5.1.1. 内存的分配与释放
2.5.1.2. 局部参数
2.5.1.3. 局部量的优点
2.5.1.4. 局部量的缺点
2.5.1.5. "局部" 的同义词
2.5.1.6. 局部内存小结
2.5.1.7. 函数调用栈是如何工作的?
2.6. 堆内存
2.6.1. 堆内存
2.6.1.1. 分配
2.6.1.2. 释放
2.6.1.3. 对堆编程
2.6.1.4. 堆示例
2.6.1.5. 数组
2.7. 链结点
2.7.1. 链结点
2.8. 链结点练习题
2.8.1. createList
2.8.2. iterateOverList
2.8.3. changePointeeNext1
2.8.4. addNodeAtHead
2.9. 附加练习题
2.9.1. changeHeadPointer2
2.9.2. changeQPointer
2.9.3. changeRPointer
2.9.4. changePointeeDataInDirect
2.9.5. circularList2
2.9.6. circularList3
2.9.7. changePointeeNext2
2.9.8. findValueInList
2.9.9. addNodeAtTail
2.9.10. changeNodesOrder1
2.9.11. changeNodesOrder2
2.10. 栈
2.10.1. 栈的术语与实现
2.10.1.1. 基于数组的栈
2.10.2. 出栈
2.11. 链式栈
2.11.1. 链式栈实现
2.11.1.1. 链式栈压入
2.11.2. 链式栈出栈
2.11.2.1. 基于数组的栈与基于链表的栈比较
2.12. 队列
2.12.1. 队列术语与实现
2.12.1.1. 基于数组的队列
2.12.1.2. 环形队列
2.12.1.3. 基于数组的队列实现
2.12.2. 基于数组的队列实践
2.13. 链式队列
2.13.1. 链式队列
2.13.2. 链式队列出队
2.13.3. 基于数组的队列与链式队列的比较
2.13.3.1. 栈与队列小结题
第 3 章
第 3 单元
¶
3.1. 章节引言
3.2. 问题、算法与程序
3.2.1. 问题、算法与程序
3.2.1.1. 问题
3.2.1.2. 算法
3.2.1.3. 程序
3.2.1.4. 小结
3.2.1.5. 小结题
3.3. 算法比较
3.3.1. 算法比较
3.3.1.1. 引言
3.3.1.2. 基本操作与输入规模
3.3.1.3. 增长率
3.3.2. 增长率排序练习
3.4. 最好、最坏与平均情况
3.4.1. 最好、最坏与平均情况
3.5. 更快的计算机,还是更快的算法?
3.5.1. 更快的计算机,还是更快的算法?
3.6. 渐近分析与上界
3.6.1. 渐近分析与上界
3.6.1.1. 上界
3.6.1.2. 简化规则
3.6.1.4. 小结
3.6.1.5. 练习题
3.7. 下界与
\(\Theta\)
记法
3.7.1. 下界与 Theta 记法
3.7.1.1. 下界
3.7.1.2. Theta 记法
3.7.1.3. 函数分类
3.7.1.4. 小结练习
3.8. 计算程序运行时间
3.8.1. 计算程序运行时间
3.8.1.1. 案例研究:两种查找算法
3.8.1.2. 二分查找练习
3.8.1.3. 分析二分查找
3.8.2. 摘要练习
3.9. 算法分析总结练习
3.9.1. 总结练习:CS2
第 4 章
第 4 单元
¶
4.1. 递归简介
4.1.1. 引言
4.2. 编写递归函数
4.2.1. 编写递归函数
4.3. 代码补全练习
4.3.1. 引言
4.3.2. 递归编程练习:最大值
4.3.3. 递归编程练习:乘法
4.3.4. 递归编程练习:最大公约数
4.3.5. 递归编程练习:对数
4.3.6. 递归编程练习:累加和
4.3.7. 递归编程练习:奇数值求和
4.3.8. 递归编程练习:各位数字之和
4.3.9. 递归编程练习:统计字符
4.4. 编写更复杂的递归函数
4.5. 中级递归代码补全练习
4.5.1. 递归编程练习:数组最小值
4.5.2. 递归编程练习:是否为逆序
4.5.3. 递归编程练习:十进制转二进制
4.6. 编写实践练习
4.6.1. 递归编程练习:叠炮弹
4.6.2. 递归编程练习:检查回文
4.6.3. 递归编程练习:子集和
4.6.4. 递归编程练习:帕斯卡三角
4.7. 跟踪递归代码
4.7.1. 跟踪递归代码
4.7.1.1. 多米诺骨牌类比
4.7.1.2. 汉诺塔
4.8. 递归代码跟踪练习
4.8.1. 前向信息流跟踪练习
4.8.2. 后向信息流跟踪练习
4.8.3. 查找错误跟踪练习
4.8.4. 两次递归调用跟踪练习
4.8.5. 调用次数跟踪练习
4.8.6. 较难跟踪练习
4.9. 递归总结练习题
4.9.1. 递归总结练习题
4.10. 章简介:排序
4.11. 排序术语与记号
4.11.1. 排序术语与记号
4.12. 插入排序
4.12.1. 插入排序
4.12.2. 插入排序分析
4.13. 归并排序概念
4.13.1. 归并排序概念
4.13.2. 归并排序练习
4.14. 快速排序
4.14.1. 引言
4.14.2. 划分
4.14.3. 综合应用
4.14.4. 快速排序分析
4.15. 堆排序
4.15.1. 堆排序
4.15.2. 堆排序熟练度练习
4.15.3. 堆排序分析
4.16. 排序算法的实验比较
4.16.1. 排序算法的实验比较
4.17. 排序的下界
4.17.1. 排序的下界
4.18. 排序小结练习
4.18.1. 排序小结练习
第 5 章
第 5 单元
¶
5.1. 链表
5.1.1. 链表
5.1.1.1. 这种表示存在的问题
5.1.1.2. 更好的解决方案
5.1.1.3. 链表的实现
5.1.2. 链表的删除
5.2. 线性表实现的比较
5.2.1. 空间比较
5.2.2. 时间比较
5.2.2.1. 练习题
5.3. 双向链表
5.3.1. 双向链表
5.3.1.1. 插入
5.3.1.2. 追加
5.3.1.3. 删除
5.3.1.4. 前移
5.3.1.5. 指针的杂糅
5.4. 线性表元素的实现
5.4.1. 线性表元素的实现
5.4.1.1. 同质性
5.4.1.2. 元素的删除
5.4.1.3. 练习题
5.5. 空闲链表
5.5.1. 空闲链表
5.6. 线性结构小结练习
5.6.1. 练习题
5.6.2. 章节复习题
5.7. 实现递归
第 6 章
第 6 单元
¶
6.1. 二叉树章节简介
6.2. 二叉树
6.2.1. 定义与性质
6.2.2. 练习题
6.3. 二叉树作为递归数据结构
6.3.1. 二叉树作为递归数据结构
6.4. 二叉树的遍历
6.4.1. 二叉树的遍历
6.4.1.1. 前序遍历
6.4.1.2. 后序遍历
6.4.1.3. 中序遍历
6.4.1.4. 实现
6.4.2. 后序遍历练习
6.4.3. 中序遍历练习
6.4.4. 总结练习
6.5. 二叉搜索树
6.5.1. 二叉搜索树的定义
6.5.1.1. 二叉搜索树的查找
6.5.2. 二叉搜索树的插入
6.5.3. 二叉搜索树的删除
6.5.4. 二叉搜索树的分析
6.6. 堆与优先队列
6.6.1. 堆与优先队列
6.6.2. 构建堆
6.6.3. 从堆中删除元素或更新对象的优先级
6.6.4. 优先队列
6.7. 实现树的遍历
6.7.1. 实现树的遍历
6.7.1.1. 基本情况
6.7.1.2. 递归调用
6.7.2. 二叉树结点值加一练习
6.8. 递归函数中的信息流
6.8.1. 递归函数中的信息流
6.8.1.1. 局部
6.8.1.2. 向下传递信息
6.8.2. 二叉树设置深度练习
6.8.3. 收集并返回
6.8.4. 二叉树校验和练习
6.8.5. 二叉树叶结点计数练习
6.8.6. 二叉树结点求和练习
6.8.7. 组合信息流
6.8.8. 二叉树检查值练习
6.8.9. 组合问题
6.8.10. 二叉树高度练习
6.8.11. 二叉树求差练习
6.8.12. 二叉树路径和存在性练习
6.9. 二叉树结点的实现
6.9.1. 二叉树结点的实现
6.10. 二叉树的空间需求
6.10.1. 二叉树的空间需求
6.11. 使用 BST 实现字典
6.12. 二叉树章节小结
6.12.1. 小结问题
第 7 章
第 7 单元
¶
7.1. 哈希简介
7.1.1. 引言
7.2. 哈希函数原理
7.2.1. 哈希函数原理
7.3. 哈希函数示例
7.3.1. 哈希函数示例
7.3.1.1. 简单取模函数
7.3.1.2. 分箱
7.3.1.3. 平方取中法
7.3.2. 一个简单的字符串哈希函数
7.3.3. 字符串折叠
7.3.4. 哈希函数练习
7.3.5. 哈希函数复习题
7.4. 开放哈希
7.4.1. 开放哈希
7.5. 桶哈希
7.5.1. 桶哈希
7.5.2. 另一种方法
7.6. 冲突解决
7.6.1. 冲突解决
7.6.1.1. 线性探测的问题
7.7. 改进的冲突解决
7.7.1. 按步长的线性探测
7.7.2. 伪随机探测
7.7.3. 二次探测
7.7.4. 双重哈希
7.8. 闭哈希分析
7.8.1. 闭哈希分析
7.9. 哈希删除
7.9.1. 删除
7.9.2. 哈希删除总结问题
7.10. 哈希章节总结练习
7.10.1. 哈希复习
第 8 章
附录
¶
8.1. 术语表
8.2. 参考文献
索引
搜索页面
隐私 |
| 许可协议
目录
::
0.
1.
如何使用本系统
»
小结*:
操作系统*:
Windows
Mac OS
Linux
iOS
Android
Other
浏览器*:
Chrome
Safari
Internet Explorer
Opera
Other
描述*:
附加截图(可选):