zoukankan      html  css  js  c++  java
  • 【数据结构的JavaScript版实现】data-struct-js的npm包初版作成

    【数据结构的JavaScript版实现】data-struct-js的npm包初版作成

    码路工人 CoderMonkey

    data-struct-js

    【数据结构的JavaScript版实现】

    拖了这么久,终于趁着春节假期把初版(即计划的内容)完成了。
    JavaScript 实现的数据结构,js库/npm包:data-struct-js
    [npm](https://www.npmjs.com/) 上搜 data-struct-js

    这个 npm 包主要侧重数据结构,
    构建了基本数据结构的概念,
    实现了常用的几个方法,
    比如图(有向图/无向图),
    仅有实现广度优先遍历和深度优先遍历,
    而其它的更多偏向于算法方面暂未涉及。


    本包特色:

    工程方面

    • ES6标准的面向对象编程
      基于ES6的类的实现,
      对于想学习JS的童鞋,
      可以看看代码中的面向对象编程
    • ES6标准的模块化开发
      基于ES6的模块化开发,
      对于想学习JS的童鞋,
      可以看看代码中的模块化开发
    • babel
      使用 babel 将 ES6 代码编译成 ES5 的JavaScript
      可以看看 babel 的简单使用
    • webpack
      当前(最)热门的打包工具
      想了解的童鞋可以看看示例部分的工程源码
      中对 webpack 的简单使用
    • 关于ES6模块化与CommonJS模块化的混用
      代码中能看到有两种模块化方式,
      关于混用,一定要搞明白为什么,
      通常来讲,是不可以混用的
    • 另外,样例工程(examples)中自定义 console 扩展可能值得一看哦

    内容方面

    • 实现了以下常用的数据结构:
      • 栈 Stack
      • 队列:
        队列 Queue
        优先队列 PriorityQueue
      • 链表:
        链表 LinkedList
        双向链表 DoublyLinkedList
        循环链表 CircleLinkedList
      • 哈希表 HashTable
      • 树:
        二叉搜索树(或叫二叉排序树)BinarySearchTree
        平衡树中的红黑树(黑色完美平衡二叉搜索树)RedBlackTree
      • 图:
        有向图 DirectedGraph
        无向图 UndirectedGraph
    • 其它(也许可以算做特色吧)
      • 红黑树中的删除节点
        讲到红黑树,一般都是有插入节点的代码实现,这个比较简单,
        而没有删除节点的代码实现,这个比较麻烦。
        至少本人在 npm 上数据结构相关的 JS 库中没有找到实现。
      • 图(有向图/无向图)中存储结构优化
        对于[邻接表 + 逆邻接表]的优化:
        有向图:使用十字链表
        无向图:使用邻接多重表
        来实现的图中数据结构的存储
      • 各种数据结构实现中代码注释详实

    TODO 事项

    若干。比如,哈希表在冲突的时候采用数组或链表来存储。
    了解过 Java 源码的童鞋一定知道,
    HashMap 在jdk1.8 之后引入了红黑树的设计,
    当冲突个数大于8个的时候就将链表结构换为了红黑树。
    当然是为了更高的效率,这里也可以来实现一下。
    还有其它未介绍到的概念和操作,本人也是在不断学习中。
    再比如,现在样例中做了对代码实现的确认,
    并不是严格意义上的单测,作为工程化的项目必须使用测试框架。

    <源码在此,免费点star啦>
    GitHub/data-struct-js
    Gitee/data-struct-js
    除了可以查看源码学习讨论,
    在前端工程中使用也是可以的!

    npm i data-struct-js
    



    结束语

    之后本人还会继续完善下去,  
    也欢迎来自大佬的指点斧正,  
    如果有兴趣也可以一起完善。
    
    也算基于这份 npm 包吧,计划的数据结构文章系列还要完成它,只是会用简单的代码实现。  
    另外,经典(排序)算法系列也即将在路上了。
    

    最后,感谢您的阅读和支持~


  • 相关阅读:
    C#读写txt文件的两种方法介绍
    C#委托的介绍(delegate、Action、Func、predicate)
    C#邮件发送
    ASP.NET 文件上传于下载
    关于Virtual Box虚拟机里的系统不能启动的解决方法
    unity的yield
    unity文件路径
    手机上的unity路径
    readonly
    unity延迟加载图片
  • 原文地址:https://www.cnblogs.com/CoderMonkie/p/data-struct-js.html
Copyright © 2011-2022 走看看