第1章 JavaScript简介 1
1.1 环境搭建 1
1.1.1 浏览器 2
1.1.2 使用Web服务器(XAMPP) 3
1.1.3 使用Node.js搭建Web服务器 4
1.2 JavaScript基础 6
1.2.1 变量 7
1.2.2 操作符 8
1.2.3 真值和假值 11
1.2.4 相等操作符(==和===) 12
1.3 控制结构 13
1.3.1 条件语句 14
1.3.2 循环 15
1.4 函数 16
1.5 面向对象编程 16
1.6 调试工具 18
1.7 小结 18
第2章 数组 19
2.1 为什么用数组 19
2.2 创建和初始化数组 20
2.3 添加和删除元素 21
2.4 二维和多维数组 24
2.5 JavaScript的数组方法参考 26
2.5.1 数组合并 27
2.5.2 迭代器函数 27
2.5.3 搜索和排序 28
2.5.4 输出数组为字符串 31
2.6 小结 32
第3章 栈 33
3.1 栈的创建 33
3.2 从十进制到二进制 38
3.3 小结 39
第4章 队列 40
4.1 创建队列 40
4.1.1 完整的Queue类 42
4.1.2 使用Queue类 43
4.2 优先队列 44
4.3 循环队列——击鼓传花 46
4.4 小结 47
第5章 链表 48
5.1 创建一个链表 49
5.1.1 向链表尾部追加元素 50
5.1.2 从链表中移除元素 52
5.1.3 在任意位置插入一个元素 54
5.1.4 实现其他方法 56
5.2 双向链表 58
5.2.1 在任意位置插入一个新元素 59
5.2.2 从任意位置移除元素 61
5.3 循环链表 64
5.4 小结 64
第6章 集合 65
6.1 创建一个集合 65
6.1.1 has(value)方法 66
6.1.2 add方法 66
6.1.3 remove和clear方法 67
6.1.4 size方法 68
6.1.5 values方法 69
6.1.6 使用Set类 69
6.2 集合操作 70
6.2.1 并集 70
6.2.2 交集 71
6.2.3 差集 72
6.2.4 子集 73
6.3 小结 74
第7章 字典和散列表 75
7.1 字典 75
7.1.1 创建一个字典 75
7.1.2 使用Dictionary类 78
7.2 散列表 79
7.2.1 创建一个散列表 79
7.2.2 使用HashTable类 81
7.2.3 散列表和散列集合 82
7.2.4 处理散列表中的冲突 82
7.2.5 创建更好的散列函数 90
7.3 小结 91
第8章 树 92
8.1 树的相关术语 92
8.2 二叉树和二叉搜索树 93
8.2.1 创建BinarySearchTree类 94
8.2.2 向树中插入一个键 95
8.3 树的遍历 98
8.3.1 中序遍历 98
8.3.2 先序遍历 99
8.3.3 后序遍历 100
8.4 搜索树中的值 101
8.4.1 搜索最小值和最大值 101
8.4.2 搜索一个特定的值 103
8.4.3 移除一个节点 104
8.5 更多关于二叉树的知识 108
8.6 小结 109
第9章 图 110
9.1 图的相关术语 110
9.2 图的表示 112
9.2.1 邻接矩阵 112
9.2.2 邻接表 113
9.2.3 关联矩阵 114
9.3 创建图类 114
9.4 图的遍历 116
9.4.1 广度优先搜索 117
9.4.2 深度优先搜索 122
9.5 小结 128
第10章 排序和搜索算法 129
10.1 排序算法 129
10.1.1 冒泡排序 130
10.1.2 选择排序 133
10.1.3 插入排序 134
10.1.4 归并排序 135
10.1.5 快速排序 138
10.2 搜索算法 142
10.2.1 顺序搜索 143
10.2.2 二分搜索 143
10.3 小结 145
第11章 算法补充知识 146
11.1 递归 146
11.1.1 JavaScript调用栈大小的限制 147
11.1.2 斐波那契数列 147
11.2 动态规划 149
11.3 贪心算法 152
11.4 大O表示法 153
11.4.1 理解大O表示法 153
11.4.2 时间复杂度比较 155
11.5 用算法娱乐身心 156
11.6 小结 157
附录A 时间复杂度速查表 158
致谢 160