【JavaScript数据结构系列】00-开篇

码路工人 CoderMonkey

转载请注明作者与出处

## 0. 开篇【JavaScript数据结构与算法】

大的计划,写以下两部分:

  • 1【JavaScript数据结构系列】
  • 2【JavaScript算法系列】

1.【JavaScript数据结构系列】

大家都知道,学习编程,基础很重要。
数据结构,就是很其中重要的一项。

本系列是个人在学习过程中的记录总结实践分享,
也希望对想要学习这方面的你,有所助益。

大白话模式开扯。

1.1 什么是数据结构

Data Structures

数据结构就是对数据的一种存储和组织方式,
具有某些特点,施加某些限制,
满足一些场景的需求,
是具体需求场景下根据其特点抽象出来的。

比如最直接的例子,

  • 去食堂打饭
  • 去银行/营业厅办理业务
  • 去美发店理发

特点就是排队,从去的早的开始依次先处理。
这里就用到了队列(Queue)。
针对VIP客户这种情况,有优先队列。

1.2 数据结构有什么用

当然是更高效方便地解决对数据的处理需求。
存储组织/插入删除/查找定位/修改替换等

写业务代码的时候也许没有体会到基础的重要,
当你以适当的数据结构解决复杂的数据关系问题,
或恰好解决业务实现时,就会感叹其中的精妙了。

作为一名合格的码路工人,

一定要学习数据结构。

1.3 本系列的计划

常用的数据结构都会涉及到,

  • JS中封装提供的

    • Array数组
    • Set集合
    • Map字典

JS中提供的,是其封装过的,
并不是原始的数据结构,
以学习API使用为主,
不做过多介绍。

  • JS未提供,自己做封装的

    • Stack栈
    • Queue队列(包括优先队列等)
    • LinkedList链表(包括双向链表等)
    • HashTable哈希表(或称散列表)
    • Tree树(包括二叉搜索树红黑树等)
    • Graph图(包括广度优先与深度优先等)

JavaScript版的数据结构,
就要用JS语言来实现。

示例代码可能会不完整,
也会照顾读者不使用新的语法,
只求能够说明数据结构及实现,
另外用最新语法实现一遍,
做成包发布到npm,说不定就有人用到呢。

npm 包:data-struct-js
> npm install data-struct-js

npm 包地址:
  https://www.npmjs.com/package/data-struct-js

源码地址

Github
  https://github.com/codermonkie/data-struct-js
  Gitee
  https://gitee.com/coder-monkey/data-struct-js


附一张思维脑图总结

*基于数组实现的哈希表


-end-

【JavaScript数据结构系列】00-开篇的更多相关文章

  1. 【JavaScript数据结构系列】01-数组Array

    [JavaScript数据结构系列]01-数组Array 码路工人 CoderMonkey 转载请注明作者与出处 # [JavaScript数据结构系列] # 01-数组Array 数组: 是有序的元 ...

  2. 【JavaScript数据结构系列】07-循环链表CircleLinkedList

    [JavaScript数据结构系列]07-循环链表CircleLinkedList 码路工人 CoderMonkey 转载请注明作者与出处 1. 认识循环链表 首节点与尾节点相连的,就构成循环链表.其 ...

  3. 【JavaScript数据结构系列】03-队列Queue

    [JavaScript数据结构系列]03-队列Queue 码路工人 CoderMonkey 转载请注明作者与出处 1. 认识队列Queue结构 队列,跟我们的日常生活非常贴近,我们前面举例了食堂排队打 ...

  4. 【JavaScript数据结构系列】05-链表LinkedList

    [JavaScript数据结构系列]05-链表LinkedList 码路工人 CoderMonkey 转载请注明作者与出处 ## 1. 认识链表结构(单向链表) 链表也是线性结构, 节点相连构成链表 ...

  5. 【JavaScript数据结构系列】06-双向链表DoublyLinkedList

    [JavaScript数据结构系列]06-双向链表DoublyLinkedList 码路工人 CoderMonkey 转载请注明作者与出处 1. 认识双向链表 不同于普通链表/单向链表,双向链表最突出 ...

  6. 【JavaScript数据结构系列】04-优先队列PriorityQueue

    [JavaScript数据结构系列]04-优先队列PriorityQueue 码路工人 CoderMonkey 转载请注明作者与出处 ## 1. 认识优先级队列 经典的案例场景: 登机时经济舱的普通队 ...

  7. 【JavaScript数据结构系列】02-栈Stack

    [JavaScript数据结构系列]02-栈Stack 码路工人 CoderMonkey 转载请注明作者与出处 ## 1. 认识栈结构 栈是非常常用的一种数据结构,与数组同属线性数据结构,不同于数组的 ...

  8. 学习JavaScript数据结构与算法---前端进阶系列

    学习建议 1.视频学习---认知 建议:在中国慕课上找"数据结构"相关的视频教程.中国大学MOOC 推荐清华大学.北京大学.浙江大学的教程,可先试看,然后根据自身的情况选择视频进行 ...

  9. JavaScript 数据结构与算法之美 - 十大经典排序算法汇总(图文并茂)

    1. 前言 算法为王. 想学好前端,先练好内功,内功不行,就算招式练的再花哨,终究成不了高手:只有内功深厚者,前端之路才会走得更远. 笔者写的 JavaScript 数据结构与算法之美 系列用的语言是 ...

随机推荐

  1. CentOS 7 编译错误解决方法集合

    解决 error: the HTTP XSLT module requires the libxml2/libxslt 错误 yum -y install libxml2 libxml2-dev yu ...

  2. 图论--LCA--树上倍增法(在线)

    /* * LCA在线算法(倍增法) */ const int MAXN = 10010; const int DEG = 20; struct Edge { int to, next; } edge[ ...

  3. 虚拟机上图片服务器搭建(FastDFS+nginx)

    文件服务器 0.提前建好需要的文件夹(/home/fastdfs) /home/fastdfs/tracker /home/fastdfs/storage /home/fastdfs/storage/ ...

  4. C. p-binary(二进制暴力)

    \(设最后的答案为t,那么有\) $$2^+2^+...2^+tp=n$$ \(那我们完全可以枚举这个t,判断n-tp(我们下面记为z)能刚好被t个二进制表示\) \(首先,z如果小于t,那一定无法表 ...

  5. STM32 标准库3.5修改默认外部8M晶振为16M晶振

    ST官方标准库V3.5默认的外部晶振频率为8M,实际使用中外部晶振需要修改为16M: 经过实验,修改有效,具体的patch如下: 修改 HSE_VALUE 值 diff --git "a/L ...

  6. 风扇转速通过FPGA采样

    1.风扇最大转速16000RPM,那么每一转需要时间60S/16000=0.00375S=375*10^4ns=T=T1+T2+T3+T4: 2.采样0.6S内的风扇detect信号的上升沿个数:0. ...

  7. 如何在MATLAB下把模糊推理系统转化为查询表(转载)

    如何在MATLAB下把模糊推理系统转化为查询表(原创) http://foundy.blog.163.com/blog/static/2633834420090212202156/?mode=edit ...

  8. 封装组件el-upload通过v-model (一): 上传单张图片

    ElementUI 中的el-upload 上传图片 我进行了二次封装.(默认大家都是有一定的vue基础的,细节就不过多的讲了) 在项目中我们主要拿到图片或者其他的一些参数 ,我这里是上传后返回的Gu ...

  9. 【SMB源码解析系列】——001.JumpEngine函数

    在SMB的源码中大概有不到20处看起来很奇怪的指令,它的格式是通过jsr指令调用一个名为JumpEngine的函数,其后并不是跟随某些后续的逻辑指令,而是通过.dw定义了一系列16位地址. 我们可以看 ...

  10. python Lambda, filter, reduce and map

    1. lambda The lambda operator or lambda function is a way to create small anonymous functions , i.e. ...