وبلاگ بلیان

-学习JavaScript数据结构与算法第三版 Learning JavaScript Data Structures and Algorithms 3rd Edition

معرفی کتاب «-学习JavaScript数据结构与算法第三版 Learning JavaScript Data Structures and Algorithms 3rd Edition» نوشتهٔ [巴西]格罗纳(LoianeGroner), 孙晓博, 邓钢, 吴双, 陈迪, 袁源، منتشرشده توسط نشر 人民邮电出版社 در سال 2019. این کتاب در فرمت pdf، زبان zh ارائه شده است. «-学习JavaScript数据结构与算法第三版 Learning JavaScript Data Structures and Algorithms 3rd 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服务器 20 1.2.3 Node.js http-server 22 1.3 JavaScript基础 22 1.3.1 变量 23 1.3.2 运算符 25 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 使用VSCode进行调试 36 1.8 小结 37 第2章 ECMAScript和TypeScript概述 38 2.1 ECMAScript还是JavaScript 38 2.1.1 ES6、ES2015、ES7、ES2016、ES8、ES2017和ES.Next 38 2.1.2 使用Babel.js 40 2.2 ECMAScript 2015+的功能 41 2.2.1 用let替代var声明变量 41 2.2.2 模板字面量 44 2.2.3 箭头函数 44 2.2.4 函数的参数默认值 45 2.2.5 声明展开和剩余参数 46 2.2.6 增强的对象属性 47 2.2.7 使用类进行面向对象编程 48 2.2.8 乘方运算符 50 2.2.9 模块 50 2.3 介绍TypeScript 56 2.3.1 类型推断 57 2.3.2 接口 58 2.3.3 其他TypeScript功能 60 2.3.4 TypeScript中对JavaScript文件的编译时检查 60 2.4 小结 61 第3章 数组 62 3.1 为什么用数组 62 3.2 创建和初始化数组 63 访问元素和迭代数组 63 3.3 添加元素 64 3.3.1 在数组末尾插入元素 64 3.3.2 在数组开头插入元素 65 3.4 删除元素 66 3.4.1 从数组末尾删除元素 66 3.4.2 从数组开头删除元素 66 3.5 在任意位置添加或删除元素 68 3.6 二维和多维数组 68 3.6.1 迭代二维数组的元素 69 3.6.2 多维数组 70 3.7 JavaScript的数组方法参考 71 3.7.1 数组合并 72 3.7.2 迭代器函数 72 3.7.3 ECMAScript 6和数组的新功能 74 3.7.4 排序元素 77 3.7.5 搜索 80 3.7.6 输出数组为字符串 81 3.8 类型数组 81 3.9 TypeScript中的数组 82 3.10 小结 83 第4章 栈 84 4.1 创建一个JavaScript数据结构和算法库 84 4.2 栈数据结构 85 4.2.1 创建一个基于数组的栈 86 4.2.2 向栈添加元素 86 4.2.3 从栈移除元素 87 4.2.4 查看栈顶元素 87 4.2.5 检查栈是否为空 88 4.2.6 清空栈元素 88 4.2.7 使用Stack类 88 4.3 创建一个基于JavaScript对象的Stack类 90 4.3.1 向栈中插入元素 90 4.3.2 验证一个栈是否为空和它的大小 91 4.3.3 从栈中弹出元素 91 4.3.4 查看栈顶的值并将栈清空 92 4.3.5 创建toString方法 92 4.4 保护数据结构内部元素 93 4.4.1 下划线命名约定 93 4.4.2 用ES2015的限定作用域Symbol实现类 94 4.4.3 用ES2015的WeakMap实现类 94 4.4.4 ECMAScript类属性提案 95 4.5 用栈解决问题 96 从十进制到二进制 96 4.6 小结 98 第5章 队列和双端队列 99 5.1 队列数据结构 99 5.1.1 创建队列 100 5.1.2 使用Queue类 103 5.2 双端队列数据结构 104 5.2.1 创建Deque类 104 5.2.2 使用Deque类 106 5.3 使用队列和双端队列来解决问题 107 5.3.1 循环队列——击鼓传花游戏 107 5.3.2 回文检查器 108 5.3.3 JavaScript任务队列 110 5.4 小结 110 第6章 链表 111 6.1 链表数据结构 111 创建链表 112 6.2 双向链表 123 6.2.1 在任意位置插入新元素 124 6.2.2 从任意位置移除元素 126 6.3 循环链表 128 6.3.1 在任意位置插入新元素 129 6.3.2 从任意位置移除元素 130 6.4 有序链表 131 有序插入元素 132 6.5 创建StackLinkedList类 133 6.6 小结 134 第7章 集合 135 7.1 构建数据集合 135 7.2 创建集合类 136 7.2.1 has(element)方法 136 7.2.2 add方法 137 7.2.3 delete和clear方法 137 7.2.4 size方法 138 7.2.5 values方法 139 7.2.6 使用Set类 139 7.3 集合运算 140 7.3.1 并集 140 7.3.2 交集 142 7.3.3 差集 144 7.3.4 子集 145 7.4 ECMAScript 2015——Set类 147 ES2015 Set类的运算 147 7.5 多重集或袋 149 7.6 小结 150 第8章 字典和散列表 151 8.1 字典 151 8.1.1 创建字典类 152 8.1.2 使用Dictionary类 158 8.2 散列表 159 8.2.1 创建散列表 160 8.2.2 使用HashTable类 163 8.2.3 散列表和散列集合 164 8.2.4 处理散列表中的冲突 164 8.2.5 创建更好的散列函数 175 8.3 ES2015 Map类 176 8.4 ES2105 WeakMap类和WeakSet类 176 8.5 小结 177 第9章 递归 178 9.1 理解递归 178 9.2 计算一个数的阶乘 179 9.2.1 迭代阶乘 179 9.2.2 递归阶乘 180 9.3 斐波那契数列 182 9.3.1 迭代求斐波那契数 183 9.3.2 递归求斐波那契数 183 9.3.3 记忆化斐波那契数 184 9.4 为什么要用递归?它更快吗 184 9.5 小结 185 第10章 树 186 10.1 树数据结构 186 10.2 树的相关术语 187 10.3 二叉树和二叉搜索树 187 10.3.1 创建BinarySearchTree类 188 10.3.2 向二叉搜索树中插入一个键 189 10.4 树的遍历 192 10.4.1 中序遍历 192 10.4.2 先序遍历 193 10.4.3 后序遍历 194 10.5 搜索树中的值 195 10.5.1 搜索最小值和最大值 195 10.5.2 搜索一个特定的值 197 10.5.3 移除一个节点 199 10.6 自平衡树 202 10.6.1 Adelson-Velskii-Landi树(AVL树) 202 10.6.2 红黑树 211 10.7 小结 217 第11章 二叉堆和堆排序 218 11.1 二叉堆数据结构 218 11.1.1 创建最小堆类 219 11.1.2 创建最大堆类 225 11.2 堆排序算法 226 11.3 小结 228 第12章 图 229 12.1 图的相关术语 229 有向图和无向图 231 12.2 图的表示 231 12.2.1 邻接矩阵 232 12.2.2 邻接表 232 12.2.3 关联矩阵 233 12.3 创建Graph类 233 12.4 图的遍历 236 12.4.1 广度优先搜索 237 12.4.2 深度优先搜索 242 12.5 最短路径算法 248 12.5.1 Dijkstra算法 249 12.5.2 Floyd-Warshall算法 251 12.6 最小生成树 252 12.6.1 Prim算法 253 12.6.2 Kruskal算法 254 12.7 小结 255 第13章 排序和搜索算法 256 13.1 排序算法 256 13.1.1 冒泡排序 256 13.1.2 选择排序 259 13.1.3 插入排序 261 13.1.4 归并排序 262 13.1.5 快速排序 264 13.1.6 计数排序 268 13.1.7 桶排序 270 13.1.8 基数排序 272 13.2 搜索算法 274 13.2.1 顺序搜索 274 13.2.2 二分搜索 275 13.2.3 内插搜索 277 13.3 随机算法 278 Fisher-Yates随机 278 13.4 小结 279 第14章 算法设计与技巧 280 14.1 分而治之 280 二分搜索 281 14.2 动态规划 282 14.2.1 最少硬币找零问题 283 14.2.2 背包问题 285 14.2.3 最长公共子序列 287 14.2.4 矩阵链相乘 289 14.3 贪心算法 291 14.3.1 最少硬币找零问题 291 14.3.2 分数背包问题 292 14.4 回溯算法 293 14.4.1 迷宫老鼠问题 294 14.4.2 数独解题器 296 14.5 函数式编程简介 299 14.5.1 函数式编程与命令式编程 299 14.5.2 ES2015+和函数式编程 300 14.5.3 JavaScript 函数式工具箱——map、filter和reduce 301 14.5.4 JavaScript 函数式类库和数据结构 303 14.6 小结 303 第15章 算法复杂度 304 15.1 大O表示法 304 15.1.1 理解大O表示法 304 15.1.2 时间复杂度比较 306 15.1.3 NP完全理论概述 309 15.2 用算法娱乐身心 310 15.3 小结 311 连接图灵 312 看完了 314 Post Pub 2019-05-01 294 Chinese People Post Press This book introduces the basics of the JavaScript language (including ECMAScript and TypeScript). followed by a discussion of arrays. stacks. queues. double-end...
دانلود کتاب -学习JavaScript数据结构与算法第三版 Learning JavaScript Data Structures and Algorithms 3rd Edition