第1章JavaScript的编程环境和模型 1
1.1 JavaScript环境 1
1.2 JavaScript编程实践 2
1.2.1声明和初始化变量 3
1.2.2 JavaScript中的算术运算和数学库函数 3
1.2.3判断结构 4
1.2.4循环结构 6
1.2.5函数 7
1.2.6变量作用域 7
1.2.7递归 9
1.3对象和面向对象编程 10
1.4小结 11
第2章 数组 13
2.1 JavaScript中对数组的定义 13
2.2使用数组 13
2.2.1创建数组 14
2.2.2读写数组 15
2.2.3由字符串生成数组 15
2.2.4对数组的整体性操作 16
2.3存取函数 17
2.3.1查找元素 17
2.3.2数组的字符串表示 18
2.3.3由已有数组创建新数组 18
2.4可变函数 19
2.4.1为数组添加元素 19
2.4.2从数组中删除元素 20
2.4.3从数组中间位置添加和删除元素 21
2.4.4为数组排序 21
2.5迭代器方法 22
2.5.1不生成新数组的迭代器方法 22
2.5.2生成新数组的迭代器方法 25
2.6二维和多维数组 27
2.6.1创建二维数组 27
2.6.2处理二维数组的元素 28
2.6.3参差不齐的数组 29
2.7对象数组 30
2.8对象中的数组 31
2.9练习 32
第3章 列表 33
3.1列表的抽象数据类型定义 33
3.2实现列表类 34
3.2.1 append:给列表添加元素 35
3.2.2 remove:从列表中删除元素 35
3.2.3 find:在列表中查找某一元素 35
3.2.4 length:列表中有多少个元素 36
3.2.5 toString:显示列表中的元素 36
3.2.6 insert:向列表中插入一个元素 37
3.2.7 clear:清空列表中所有的元素 37
3.2.8 contains:判断给定值是否在列表中 37
3.2.9遍历列表 38
3.3使用迭代器访问列表 39
3.4一个基于列表的应用 40
3.4.1读取文本文件 40
3.4.2使用列表管理影碟租赁 41
3.5练习 44
第4章栈 45
4.1对栈的操作 45
4.2栈的实现 46
4.3使用Stack类 48
4.3.1数制间的相互转换 49
4.3.2回文 50
4.3.3递归演示 51
4.4练习 52
第5章 队列 53
5.1对队列的操作 53
5.2一个用数组实现的队列 54
5.3使用队列:方块舞的舞伴分配问题 57
5.4使用队列对数据进行排序 61
5.5优先队列 63
5.6练习 65
第6章 链表 67
6.1数组的缺点 67
6.2定义链表 67
6.3设计一个基于对象的链表 69
6.3.1 Node类 69
6.3.2 LinkedList类 69
6.3.3插入新节点 69
6.3.4从链表中删除一个节点 71
6.4双向链表 74
6.5循环链表 78
6.6链表的其他方法 79
6.7练习 79
第7章 字典 81
7.1 Dictionary类 81
7.2 Dictionary类的辅助方法 83
7.3为Dictionary类添加排序功能 85
7.4练习 86
第8章 散列 87
8.1散列概览 87
8.2 HashTable类 88
8.2.1选择一个散列函数 88
8.2.2一个更好的散列函数 91
8.2.3散列化整型键 93
8.2.4 对散列表排序、从散列表中取值 95
8.3碰撞处理 96
8.3.1开链法 96
8.3.2线性探测法 99
8.4练习 100
第9章 集合 101
9.1集合的定义、操作和属性 101
9.1.1集合的定义 101
9.1.2对集合的操作 102
9.2 Set类的实现 102
9.3更多集合操作 104
9.4练习 107
第10章 二叉树和二叉查找树 109
10.1树的定义 109
10.2二叉树和二叉查找树 111
10.2.1实现二叉查找树 111
10.2.2遍历二叉查找树 113
10.3在二叉查找树上进行查找 116
10.3.1查找最小值和最大值 116
10.3.2查找给定值 117
10.4从二叉查找树上删除节点 118
10.5计数 120
10.6练习 123
第11章 图和图算法 125
11.1图的定义 125
11.2用图对现实中的系统建模 127
11.3图类 127
11.3.1表示顶点 127
11.3.2表示边 127
11.3.3构建图 128
11.4搜索图 130
11.4.1深度优先搜索 130
11.4.2广度优先搜索 133
11.5查找最短路径 135
11.5.1广度优先搜索对应的最短路径 135
11.5.2确定路径 135
11.6拓扑排序 137
11.6.1拓扑排序算法 137
11.6.2实现拓扑排序算法 137
11.7练习 141
第12章 排序算法 143
12.1数组测试平台 143
12.2基本排序算法 145
12.2.1冒泡排序 145
12.2.2选择排序 148
12.2.3插入排序 150
12.2.4基本排序算法的计时比较 151
12.3高级排序算法 153
12.3.1希尔排序 153
12.3.2归并排序 158
12.3.3快速排序 163
12.4练习 167
第13章 检索算法 169
13.1顺序查找 169
13.1.1查找最小值和最大值 172
13.1.2使用自组织数据 175
13.2二分查找算法 177
13.3查找文本数据 183
13.4练习 185
第14章 高级算法 187
14.1动态规划 187
14.1.1动态规划实例:计算斐波那契数列 188
14.1.2寻找最长公共子串 191
14.1.3背包问题:递归解决方案 194
14.1.4背包问题:动态规划方案 195
14.2贪心算法 196
14.2.1第一个贪心算法案例:找零问题 196
14.2.2背包问题的贪心算法解决方案 197
14.3练习 199
封面介绍 200