首先,有一点要声明,下面所有文章的所有内容的代码,都不是我一个人独立完成的,它们来自于一本叫做《学习JavaScript数据结构和算法》(第二版),人民邮电出版社出版的这本书。github代码地址是https://github.com/loiane/javascript-datastructures-algorithms。

  先说下我个人对这本书的看法吧。对于数据结构的介绍不够深入和详细,对于那些计算机专业的前端从业者来说,十分的鸡肋。而对于那些非计算机专业,又完全没接触过数据结构是什么东西的前端coder来说。其中的讲解又十分的不具体,很多内容都是寥寥数笔一带而过,完全没有代表性,对于思路的讲解并不明了,只是罗列了每一步骤,但是实际上单独的列举出每一步做了什么并没什么用,我自己看代码就可以了,用你说什么。当然,我也在网上找到了很多类似于本系列的文章,大多数都是基于此书的代码,但是要么就是完全复制的代码,解释十分的少或者几乎没有,要么就是整体不清不楚,让人不知所以然。

  所以,我就想在学习的过程中把自己的理解,自己对于这个数据结构的思路和每一行代码在上下文中所起到的作用以及相互之间的影响等等写出来。希望大家在学习数据结构的时候可以走的更容易一点。在学习的过程中,有不理解的地方,书中讲的不易理解的地方,都是自己画图,自己去找资料,然后再回来结合代码,给出一个“自认为”还不错的解释。

  终于,完成了有关用js来实现数据结构的所有内容,前后大概花了一个多月将近40小时的时间,一共16篇文章。有最基本的js数组的详细讲解。也有非线性的散列表、树和图。其实对于用js来实现数据结构,个人感觉更多要学习的是那种数据结构的思想。一旦你理解了这个数据结构的思想,那么自然,实现代码也不过就是时间的问题了。本系列所有的内容,都是我一个字一个字打出来的,包括书中的代码和自己加上的注释,当然,其中概念性的问题一部分来自于此书,书中解释不清楚的我都在文中附上了资料的链接。

  那么,如果各位老爷在阅读的时候有不理解或者觉得不清楚的地方,还希望可以留言提出。互相学习。

  噢,对,还是要说一下我觉得这个系列的重点吧。重点在后6篇和前3篇(Array,hashMap,Tree和Graph)。而对于前面的栈,队列等。是你学习后面的基础,因为在树,图等数据结构的实现中,都用到了前面的数据结构。

  所以,大家如果想要学习数据结构。那么个人觉得这系列文章是个不错的开始。或许你会问,我看完这系列文章会学到什么?我真的就懂了数据结构么?当然没有。就单单拿一个图来说,足够写一本厚厚的书了。所以,你学完这个系列,最多只是打开了数据结构的大门,迈出了你的右脚(或者左脚)向门里面的世界探了探,连走进这个大门都不算。

  

  最后说一下本系列的使用方法和大概的阅读时间吧。

  使用方法:首先,你把代码复制到本地,去掉所有的注释,然后就着文章,看一遍代码。然后自己打一遍代码,有不明白的地方再去看注释。这是本系列的服用说明。

  所花时间:每天一个小时,大概需要花上一个月。当然,不仅仅是读一遍,而是跟着文章中的代码和注释完整的过了一遍自己的脑子。

  好了,不罗嗦了。就到这里吧。也算是给自己的交上了一份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-图的遍历)

    附:算法部分也基本上全部完成了,其中比如搜索、排序算法, 比如函数式编程这几篇文章是极力推荐大家去仔细阅读一下的,因为如果你对这方面没有深入的学习研究过,那么你阅读学习下面的文章之后,会有不小的收货。当然这里有一篇文章我个人的见解是你可以简单阅读,但是不懂也没什么关系,因为它对于算法已经算是较为深入的部分了,就是js算法初窥05(算法模式02-动态规划与贪心算法)这一篇,如果你本身就有算法基础,那么就当我没说。

    算法部分:

    1、js算法初窥01(排序算法01-冒泡、选择、插入)

    2、js算法初窥02(排序算法02-归并、快速以及堆排序)

    3、js算法初窥03(简单搜索及去重算法)

    4、js算法初窥04(算法模式01-递归)

    5、js算法初窥05(算法模式02-动态规划与贪心算法)

    6、js算法初窥06(算法模式03-函数式编程)

  

    最后,谢谢!

用js来实现那些数据结构及算法—目录的更多相关文章

  1. Java数据结构和算法(一)散列表

    Java数据结构和算法(一)散列表 数据结构与算法目录(https://www.cnblogs.com/binarylei/p/10115867.html) 散列表(Hash table) 也叫哈希表 ...

  2. Java数据结构和算法(七)B+ 树

    Java数据结构和算法(七)B+ 树 数据结构与算法目录(https://www.cnblogs.com/binarylei/p/10115867.html) 我们都知道二叉查找树的查找的时间复杂度是 ...

  3. Java数据结构和算法(五)二叉排序树(BST)

    Java数据结构和算法(五)二叉排序树(BST) 数据结构与算法目录(https://www.cnblogs.com/binarylei/p/10115867.html) 二叉排序树(Binary S ...

  4. Java数据结构和算法(二)顺序存储的树结构

    Java数据结构和算法(二)顺序存储的树结构 数据结构与算法目录(https://www.cnblogs.com/binarylei/p/10115867.html) 二叉树也可以用数组存储,可以和完 ...

  5. Java数据结构和算法(一)线性结构

    Java数据结构和算法(一)线性结构 数据结构与算法目录(https://www.cnblogs.com/binarylei/p/10115867.html) 线性表 是一种逻辑结构,相同数据类型的 ...

  6. Java数据结构和算法(一)树

    Java数据结构和算法(一)树 数据结构与算法目录(https://www.cnblogs.com/binarylei/p/10115867.html) 前面讲到的链表.栈和队列都是一对一的线性结构, ...

  7. Java数据结构和算法(一)概念

    Java数据结构和算法(一)概念 数据结构与算法目录(https://www.cnblogs.com/binarylei/p/10115867.html) 一.逻辑结构 数据之间的相互关系称为逻辑结构 ...

  8. 数据结构与算法JS实现

      行解算法题,没错,就是这么方便. 当然也可以使用 Node.js 环境来执行,具体参考Node.js官方文档即可. 二 对象和面向对象编程 js中5种数据类型,并没有定义更多的数据类型,但是运用j ...

  9. JS数据结构与算法——栈

    JS数据结构与算法--栈 1.栈结构概念 栈(Stack)是一种先进后出(LIFO Last in First out)的线性表,先进栈的将会比后进栈的先出栈. 栈的限制是仅允许在一端进行插入和删除运 ...

随机推荐

  1. Flink窗口介绍及应用

    Windows是Flink流计算的核心,本文将概括的介绍几种窗口的概念,重点只放在窗口的应用上. 本实验的数据采用自拟电影评分数据(userId, movieId, rating, timestamp ...

  2. node爬虫进阶版

    手写了一个方便爬虫的小库: const url = require('url') const glib = require('zlib') //默认头部 const _default_headers ...

  3. LRN

    转自https://blog.csdn.net/u011204487/article/details/76026537 LRN全称为Local Response Normalization,即局部响应 ...

  4. logstash收集ngx日志

    if [type] =~ "ngx-" { #去掉重复的行 mutate { add_field => {"line_message" => &qu ...

  5. A Brief Overview of Deep Learning

    A Brief Overview of Deep Learning (This is a guest post by Ilya Sutskever on the intuition behind de ...

  6. 一些js的小技巧

    这里收集了一些编码上的小技巧,大家可以学习学习. 1.浮点转整型 使用|0快速转换 var a=(12.002)|0;//12 使用~~快速转换 ~取反运算符,2=0010,~2=1101,因为第一位 ...

  7. Linux中Nginx安装与配置详解

    转载自:http://www.linuxidc.com/Linux/2016-08/134110.htm Linux中Nginx安装与配置详解(CentOS-6.5:nginx-1.5.0). 1 N ...

  8. 整理一下原生js的dom操作

    获取元素 getElementById() getElementsByClass() getElementsByTagName getElementsByName node属性 前.后.父.子 pre ...

  9. 内核早期内存分配器:memblock

    内核早期内存分配器:memblockLinux内核使用伙伴系统管理内存,那么在伙伴系统工作前,如何管理内存?答案是memblock.memblock在系统启动阶段进行简单的内存管理,记录物理内存的使用 ...

  10. vim命令学习

    文本编辑器vim vim常用操作 vim是一个强大的全屏幕文本编辑器,是Linux上最常用的文本编辑器,它的作用是建立,编辑,显示文本文件. vim没有菜单,只有命令. 输入a或i或o进入编辑命令,下 ...