وبلاگ بلیان

-学习JavaScript数据结构与算法第二版 Learning JavaScript Data Structures and Algorithms 2nd Edition

معرفی کتاب «-学习JavaScript数据结构与算法第二版 Learning JavaScript Data Structures and Algorithms 2nd Edition» نوشتهٔ [巴西]格罗纳(LoianeGroner), 孙晓博, 邓钢, 吴双, 陈迪, 袁源، منتشرشده توسط نشر 人民邮电出版社 در سال 2017. این کتاب در فرمت pdf، زبان zh ارائه شده است. «-学习JavaScript数据结构与算法第二版 Learning JavaScript Data Structures and Algorithms 2nd Edition» در دستهٔ بدون دسته‌بندی قرار دارد.

封面 1 数字版权声明 2 作译者简介 3 扉页 4 版权页 5 版权声明 6 致谢 7 前言 8 目录 14 第1章 JavaScript简介 18 1.1 JavaScript数据结构与算法 18 1.2 环境搭建 19 1.2.1 最简单的环境搭建 19 1.2.2 使用Web服务器(XAMPP) 21 1.2.3 使用Node.js搭建Web服务器 22 1.3 JavaScript基础 23 1.3.1 变量 24 1.3.2 操作符 26 1.3.3 真值和假值 28 1.3.4 相等操作符(==和===) 29 1.4 控制结构 31 1.4.1 条件语句 31 1.4.2 循环 32 1.5 函数 33 1.6 JavaScript面向对象编程 34 1.7 调试工具 35 1.8 ECMAScript概述 36 ECMAScript 6和ECMAScript 7 36 1.9 ECMAScript 6的功能 38 1.9.1 用let替代var声明变量 38 1.9.2 常量 40 1.9.3 模板字面量 40 1.9.4 箭头函数 41 1.9.5 函数的参数默认值 41 1.9.6 声明展开和剩余参数 42 1.9.7 使用类进行面向对象编程 44 1.10 ECMAScript 7的功能 46 ES6和ES7的向下兼容性 47 1.11 小结 47 第2章 数组 48 2.1 为什么用数组 48 2.2 创建和初始化数组 49 访问元素和迭代数组 49 2.3 添加元素 50 2.3.1 使用push方法 50 2.3.2 插入元素到数组首位 51 2.4 删除元素 51 从数组首位删除元素 52 2.5 在任意位置添加或删除元素 53 2.6 二维和多维数组 53 2.6.1 迭代二维数组的元素 54 2.6.2 多维数组 55 2.7 JavaScript的数组方法参考 56 2.7.1 数组合并 56 2.7.2 迭代器函数 57 2.7.3 ECMAScript 6和数组的新功能 59 2.7.4 排序元素 63 2.7.5 搜索 65 2.7.6 输出数组为字符串 66 2.8 类型数组 67 2.9 小结 68 第3章 栈 69 3.1 栈数据结构 69 3.1.1 创建栈 70 3.1.2 向栈添加元素 70 3.1.3 从栈移除元素 70 3.1.4 查看栈顶元素 71 3.1.5 检查栈是否为空 71 3.1.6 清空和打印栈元素 71 3.2 ECMAScript 6和Stack类 73 用ES6语法声明Stack类 73 3.3 用栈解决问题 76 从十进制到二进制 76 3.4 小结 78 第4章 队列 79 4.1 队列数据结构 79 4.2 创建队列 80 4.2.1 向队列添加元素 80 4.2.2 从队列移除元素 80 4.2.3 查看队列头元素 81 4.2.4 检查队列是否为空 81 4.2.5 打印队列元素 81 4.3 用ECMAScript 6语法实现的Queue类 83 4.4 优先队列 83 4.5 循环队列——击鼓传花 85 4.6 JavaScript任务队列 87 4.7 小结 87 第5章 链表 88 5.1 链表数据结构 88 5.2 创建链表 89 5.2.1 向链表尾部追加元素 90 5.2.2 从链表中移除元素 92 5.2.3 在任意位置插入元素 94 5.2.4 实现其他方法 96 5.3 双向链表 99 5.3.1 在任意位置插入新元素 99 5.3.2 从任意位置移除元素 102 5.4 循环链表 104 5.5 小结 105 第6章 集合 106 6.1 构建数据集合 106 6.2 创建集合 106 6.2.1 has(value)方法 107 6.2.2 add方法 108 6.2.3 remove和clear方法 108 6.2.4 size方法 109 6.2.5 values方法 110 6.2.6 使用Set类 110 6.3 集合操作 111 6.3.1 并集 111 6.3.2 交集 112 6.3.3 差集 114 6.3.4 子集 115 6.4 ES6——Set类 116 ES6 Set类的操作 117 6.5 小结 118 第7章 字典和散列表 119 7.1 字典 119 7.1.1 创建字典 119 7.1.2 使用Dictionary类 122 7.2 散列表 123 7.2.1 创建散列表 123 7.2.2 使用HashTable类 125 7.2.3 散列表和散列集合 126 7.2.4 处理散列表中的冲突 126 7.2.5 创建更好的散列函数 134 7.3 ES6——Map类 135 7.4 ES6——WeakMap类和WeakSet类 135 7.5 小结 136 第8章 树 137 8.1 树数据结构 137 8.2 树的相关术语 138 8.3 二叉树和二叉搜索树 138 8.3.1 创建BinarySearchTree类 139 8.3.2 向树中插入一个键 140 8.4 树的遍历 143 8.4.1 中序遍历 143 8.4.2 先序遍历 144 8.4.3 后序遍历 145 8.5 搜索树中的值 146 8.5.1 搜索最小值和最大值 147 8.5.2 搜索一个特定的值 148 8.5.3 移除一个节点 150 8.6 自平衡树 154 8.6.1 Adelson-Velskii-Landi树(AVL树) 154 8.6.2 更多关于二叉树的知识 160 8.7 小结 160 第9章 图 161 9.1 图的相关术语 161 有向图和无向图 162 9.2 图的表示 163 9.2.1 邻接矩阵 163 9.2.2 邻接表 164 9.2.3 关联矩阵 165 9.3 创建Graph类 165 9.4 图的遍历 167 9.4.1 广度优先搜索 168 9.4.2 深度优先搜索 173 9.5 最短路径算法 179 9.5.1 Dijkstra算法 180 9.5.2 Floyd-Warshall算法 182 9.6 最小生成树 183 9.6.1 Prim算法 183 9.6.2 Kruskal算法 185 9.7 小结 186 第10章 排序和搜索算法 187 10.1 排序算法 187 10.1.1 冒泡排序 188 10.1.2 选择排序 191 10.1.3 插入排序 192 10.1.4 归并排序 193 10.1.5 快速排序 196 10.1.6 堆排序 200 10.1.7 计数排序、桶排序和基数排序(分布式排序) 203 10.2 搜索算法 204 10.2.1 顺序搜索 204 10.2.2 二分搜索 204 10.3 小结 206 第11章 算法模式 207 11.1 递归 207 11.1.1 JavaScript调用栈大小的限制 208 11.1.2 斐波那契数列 208 11.2 动态规划 210 11.2.1 最少硬币找零问题 211 11.2.2 背包问题 213 11.2.3 最长公共子序列 215 11.2.4 矩阵链相乘 217 11.3 贪心算法 219 11.3.1 最少硬币找零问题 220 11.3.2 分数背包问题 221 11.4 函数式编程简介 222 11.4.1 函数式编程与命令式编程 222 11.4.2 ES2015和函数式编程 223 11.4.3 JavaScript函数式工具箱—— map、filter和reduce 224 11.4.4 JavaScript函数式类库和数据结构 226 11.5 小结 226 第12章 算法复杂度 227 12.1 大O表示法 227 12.1.1 理解大O表示法 227 12.1.2 时间复杂度比较 229 12.1.3 NP完全理论概述 231 12.2 用算法娱乐身心 233 12.3 小结 234 延展阅读 235 连接图灵 236 看完了 238
دانلود کتاب -学习JavaScript数据结构与算法第二版 Learning JavaScript Data Structures and Algorithms 2nd Edition