首先, 有一点要声明, 下面所有文章的所有内容的代码, 都不是我一个人独立完成的, 它们来自于一本叫做学习 JavaScript 数据结构和算法(第二版), 人民邮电出版社出版的这本书. github 代码地址是 https://github.com/loiane/javascript-datastructures-algorithms .
先说下我个人对这本书的看法吧. 对于数据结构的介绍不够深入和详细, 对于那些计算机专业的前端从业者来说, 十分的鸡肋. 而对于那些非计算机专业, 又完全没接触过数据结构是什么东西的前端 coder 来说. 其中的讲解又十分的不具体, 对于思路的讲解并不明了.
当然, 我也在网上找到了很多类似于本系列的文章, 大多数都是基于此书的代码, 但是要么就是完全复制的代码, 解释十分的少或者几乎没有, 要么就是整体不清不楚, 让人不知所以然.
所以, 我就想在学习的过程中把自己的理解, 自己对于这个数据结构的思路和每一行代码在上下文中所起到的作用等等写出来. 希望大家在学习数据结构的时候可以走的更容易一点.
在学习的过程中, 有不理解的地方, 书中讲的不易理解的地方, 都是自己画图, 自己去找资料, 然后再回来结合代码, 给出一个 "自认为" 还不错的解释.
终于, 完成了有关用 js 来实现数据结构的所有内容, 前后大概花了一个多月的时间, 一共 16 篇文章. 有最基本的 js 数组的详细讲解. 也有非线性的散列表, 树和图. 其实对于用 js 来实现数据结构, 个人感觉更多要学习的是那种数据结构的思想. 一旦你理解了这个数据结构的思想, 那么自然, 实现代码也不过就是时间的问题了.
本系列所有的内容, 都是我一个字一个字打出来的, 包括书中的代码和自己加上的注释, 当然, 其中概念性的问题一部分来自于此书, 书中解释不清楚的我都在文中附上了资料的链接.
那么, 如果各位老爷在阅读的时候有不理解或者觉得不清楚的地方, 还希望可以留言提出. 互相学习.
噢, 对, 还是要说一下我觉得这个系列的重点吧. 重点在后 6 篇, 也就是从散列表开始的非线性数据结构. 而对于前面的栈, 队列等. 是你学习后面的基础, 因为在树, 图等数据结构的实现中, 都用到了前面的代码.
所以, 大家如果想要学习数据结构. 那么个人觉得这系列文章是个不错的开始. 或许你会问, 我看完这系列文章会学到什么? 我真的就懂了数据结构么? 当然没有. 就单单拿一个图来说, 足够写一本厚厚的书了. 所以, 你学完这个系列, 最多只是打开了数据结构的大门, 迈出了你的右脚 (或者左脚) 向门里面的世界探了探, 连走进这个大门都不算.
我完成这 16 篇文章, 大概花了四十个小时的时间. 如果你想要真的弄懂下面目录内的所有内容, 每天一个小时, 大概需要花上一个月. 当然, 不仅仅是读一遍, 而是跟着文章中的代码和注释完整的过了一遍自己的脑子.
最后说一下本系列的使用方法吧, 首先, 你把代码复制到本地, 去掉所有的注释, 然后就着文章, 看一遍代码. 然后自己打一遍代码, 有不明白的地方再去看注释. 这是本系列的服用说明.
好了, 不罗嗦了. 就到这里吧. 也算是给自己的交上了一份 6 分的答卷.
下面是目录:
1, 用 js 来实现那些数据结构 01(数组篇 01 - 数组的增删)
2, 用 js 来实现那些数据结构 02(数组篇 02 - 数组方法)
3, 用 js 来实现那些数据结构 03(数组篇 03 - 排序及多维数组)
4, 用 js 来实现那些数据结构 04(栈 01 - 栈的实现)
5, 用 js 来实现那些数据结构 05(栈 02 - 栈的应用)
6, 用 js 来实现那些数据结构 06(队列)
7, 用 js 来实现那些数据结构 07(链表 01 - 链表的实现)
8, 用 js 来实现那些数据结构 08(链表 02 - 双向链表)
9, 用 js 来实现那些数据结构 09(集合 01 - 集合的实现)
10, 用 js 来实现那些数据结构 10(集合 02 - 集合的操作)
11, 用 js 来实现那些数据结构 11(字典)
12, 用 js 来实现那些数据结构 12(散列表)
13, 用 js 来实现那些数据结构 13(树 01 - 二叉搜索树的实现)
14, 用 js 来实现那些数据结构 14(树 02-AVL 树)
15, 用 js 来实现那些数据结构 15(图 01)
16, 用 js 来实现那些数据结构 16(图 02 - 图的遍历)
来源: https://www.cnblogs.com/zaking/p/9016600.html