- 1.1 JavaScript环境
- 1.2 JavaScript编程实践
- 1.2.1 声明和初始化变量
- 1.2.2 JavaScript中的算术运算和数学库函数
- 1.2.3 判断结构
- 1.2.4 循环结构
- 1.2.5 函数
- 1.2.6 变量作用域
- 1.2.7 递归
- 1.3 对象和面向对象编程
- 1.4 小结
- 2.1 JavaScript中对数组的定义
- 2.2 使用数组
- 2.2.1 创建数组
- 2.2.2 读写数组
- 2.2.3 由字符串生成数组
- 2.2.4 对数组的整体性操作
- 2.3 存取函数
- 2.3.1 查找元素
- 2.3.2 数组的字符串表示
- 2.3.3 由已有数组创建新数组
- 2.4 可变函数
- 2.4.1 为数组添加元素
- 2.4.2 从数组中删除元素
- 2.4.3 从数组中间位置添加和删除元素
- 2.4.4 为数组排序
- 2.5 迭代器方法
- 2.5.1 不生成新数组的迭代器方法
- 2.5.2 生成新数组的迭代器方法
- 2.6 二维和多维数组
- 2.6.1 创建二维数组
- 2.6.2 处理二维数组的元素
- 2.6.3 参差不齐的数组
- 2.7 对象数组
- 2.8 对象中的数组
- 2.9 练习
- 3.1 列表的抽象数据类型定义
- 3.2 实现列表类
- 3.2.1 append:给列表添加元素
- 3.2.2 remove:从列表中删除元素
- 3.2.3 find:在列表中查找某一元素
- 3.2.4 length:列表中有多少个元素
- 3.2.5 toString:显示列表中的元素
- 3.2.6 insert:向列表中插入一个元素
- 3.2.7 clear:清空列表中所有的元素
- 3.2.8 contains:判断给定值是否在列表中
- 3.2.9 遍历列表
- 3.3 使用迭代器访问列表
- 3.4 一个基于列表的应用
- 3.4.1 读取文本文件
- 3.4.2 使用列表管理影碟租赁
- 3.5 练习
- 4.1 对栈的操作
- 4.2 栈的实现
- 4.3 使用Stack类
- 4.3.1 数制间的相互转换
- 4.3.2 回文
- 4.3.3 递归演示
- 4.4 练习
- 5.1 对队列的操作
- 5.2 一个用数组实现的队列
- 5.3 使用队列:方块舞的舞伴分配问题
- 5.4 使用队列对数据进行排序
- 5.5 优先队列
- 5.6 练习
- 6.1 数组的缺点
- 6.2 定义链表
- 6.3 设计一个基于对象的链表
- 6.3.1 Node类
- 6.3.2 LinkedList类
- 6.3.3 插入新节点
- 6.3.4 从链表中删除一个节点
- 6.4 双向链表
- 6.5 循环链表
- 6.6 链表的其他方法
- 6.7 练习
- 7.1 Dictionary类
- 7.2 Dictionary类的辅助方法
- 7.3 为Dictionary类添加排序功能
- 7.4 练习
- 8.1 散列概览
- 8.2 HashTable类
- 8.2.1 选择一个散列函数
- 8.2.2 一个更好的散列函数
- 8.2.3 散列化整型键
- 8.2.4 对散列表排序、从散列表中取值
- 8.3 碰撞处理
- 8.3.1 开链法
- 8.3.2 线性探测法
- 8.4 练习
- 9.1 集合的定义、操作和属性
- 9.1.1 集合的定义
- 9.1.2 对集合的操作
- 9.2 Set类的实现
- 9.3 更多集合操作
- 9.4 练习
- 10.1 树的定义
- 10.2 二叉树和二叉查找树
- 10.2.1 实现二叉查找树
- 10.2.2 遍历二叉查找树
- 10.3 在二叉查找树上进行查找
- 10.3.1 查找最小值和最大值
- 10.3.2 查找给定值
- 10.4 从二叉查找树上删除节点
- 10.5 计数
- 10.6 练习
- 11.1 图的定义
- 11.2 用图对现实中的系统建模
- 11.3 图类
- 11.3.1 表示顶点
- 11.3.2 表示边
- 11.3.3 构建图
- 11.4 搜索图
- 11.4.1 深度优先搜索
- 11.4.2 广度优先搜索
- 11.5 查找最短路径
- 11.5.1 广度优先搜索对应的最短路径
- 11.5.2 确定路径
- 11.6 拓扑排序
- 11.6.1 拓扑排序算法
- 11.6.2 实现拓扑排序算法
- 11.7 练习
- 12.1 数组测试平台
- 12.2 基本排序算法
- 12.2.1 冒泡排序
- 12.2.2 选择排序
- 12.2.3 插入排序
- 12.2.4 基本排序算法的计时比较
- 12.3 高级排序算法
- 12.3.1 希尔排序
- 12.3.2 归并排序
- 12.3.3 快速排序
- 12.4 练习
- 13.1 顺序查找
- 13.1.1 查找最小值和最大值
- 13.1.2 使用自组织数据
- 13.2 二分查找算法
- 13.3 查找文本数据
- 13.4 练习
- 14.1 动态规划
- 14.1.1 动态规划实例:计算斐波那契数列
- 14.1.2 寻找最长公共子串
- 14.1.3 背包问题:递归解决方案
- 14.1.4 背包问题:动态规划方案
- 14.2 贪心算法
- 14.2.1 第一个贪心算法案例:找零问题
- 14.2.2 背包问题的贪心算法解决方案
- 14.3 练习