【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. #Week5 Regularization

    一.The Problem of Overfitting 欠拟合(high bias):模型不能很好地适应训练集: 过拟合(high variance):模型过于强调拟合原始数据,测试时效果会比较差. ...

  2. 似乎是最实用的hashtable知识总结

    哈希表:将对象转换为索引,然后存储在数组中. 定义注意点: 对象:就是面向对象中的对象,可以为任何东西.整数.浮点数.日期.字符串.类. 转换:通过hash函数来完成,hash函数是hash表的核心与 ...

  3. C - 小明系列故事――捉迷藏 HDU - 4528 bfs +状压 旅游-- 最短路+状压

    C - 小明系列故事――捉迷藏 HDU - 4528 这个题目看了一下题解,感觉没有很难,应该是可以自己敲出来的,感觉自己好蠢... 这个是一个bfs 用bfs就很好写了,首先可以预处理出大明和二明能 ...

  4. B - Housewife Wind POJ - 2763 树剖+边权转化成点权

    B - Housewife Wind POJ - 2763 因为树剖+线段树只能解决点权问题,所以这种题目给了边权的一般要转化成点权. 知道这个以后这个题目就很简单了. 怎么转化呢,就把这个边权转化为 ...

  5. CSS的基础使用

    一,css是什么? CSS全称为“层叠样式表” ,与HTML相辅相成,实现网页的排版布局与样式美化 二,CSS使用方式 1.行内样式/内联样式(单一页面中使用) 借助于style标签属性,为当前的标签 ...

  6. Dynamics 365 基于 Sql Server 2017 安装 报表 问题

    如果使用SQL2017 安装D365 会发现 SSRS与AD不能在同一台服务器上,因为无法安装SSRS,而无SSRS 则D365是无法继续安装的. 所以解决方法有二个: 1.另外准备一台服务器,不需要 ...

  7. 第十一章:Python高级编程-协程和异步IO

    第十一章:Python高级编程-协程和异步IO Python3高级核心技术97讲 笔记 目录 第十一章:Python高级编程-协程和异步IO 11.1 并发.并行.同步.异步.阻塞.非阻塞 11.2 ...

  8. hive元数据报错?试了很多方法都没辙?也许你漏了这一步

    进入hiveCLI后,输入show databases; 显示 FAILED: SemanticException org.apache.hadoop.hive.ql.metadata.HiveExc ...

  9. Linux内核驱动学习(七)应用层直接操作GPIO

    文章目录 简介 原理图 节点 设置为输出 设置为输入 映射关系 debugfs pwm demo 简介 前面通过libgpio的方式介绍了内核空间对GPIO进行操作的接口,其做了较好的封装,同时Lin ...

  10. python语法学习第一天--变量、运算符、数据类型

    变量:计算机中的一块内存,给变量赋值意味着将值存入内存中 python中变量不用类型声明(根据赋的值决定类型),但使用时(创建时)必须赋值(=赋值). 多个变量的赋值: ①a=b=c=1; ②a,b, ...