翻译:疯狂的技术宅
英文:https://code.tutsplus.com/tut...
说明:本文翻译自系列文章《Data Structures With JavaScript》,总共为四篇,原作者是在美国硅谷工作的工程师 Cho S. Kim。初次翻译,如果存在问题欢迎指出和探讨。
说明:本专栏文章首发于公众号:jingchengyideng 。
一直以来,我都认为“数据结构”这个术语是令人困惑的。它到底是什么,是“作用于数据的结构”吗?这同样是一个模棱两可的术语。
当我和同伴们分享自己的困惑时,他们很快就会说:“有结构的数据”。满意的表情出现在他们脸上,这让我怀疑自己甚至怀疑人生。我想这就是自己应该知道的。
最后我还是搞清楚了数据结构的概念,那就简单的把术语“数据结构”称为“数据的结构”。这样,我们就把焦点从“数据”(一件事)转移到了“结构”(组织)。这是一个微妙但非常重要的细节。换句话说,我们不再关注事物本身,而是关注如何组织事物的过程。
让我们想象一下,假设我们讨论的东西都是书籍。那么怎样做才是合理的呢?是书籍的结构,还是书籍的组织方式呢?在我看来,后者更容易理解。重点在于怎样组织而不是书籍本身。
不同类型的数据结构
书籍,就像数据一样,可以用多种方式组织起来。假如我们有20本书,那么应该怎样组织它们呢?
如果我们想要在书架上很快的找到一本参考书,不妨这样做:把所有的书都按照字母顺序排列在书架上,当你需要某一本书时,就可以很快的找到它,因为我们知道书籍是按照字母表的顺序摆放的。
如果我们想按照一个特定的顺序阅读所有的书,比如从第一本读到最后一本,那么我们就应该按照这种顺序把书放置在书架上,并且还需要制定一个规则来约束这种阅读顺序。
如果我们没有足够的空间把所有的书全都放在一起,就需要一种能够快速找到它们的方式进行组织。比如:家里的不同位置散落着20本书,我们就需要一个有两列的表格,其中第一列列出书的标题,第二列列出其对应的位置。
到这里我们应该已经清楚了,组织书籍的方法有很多,换句话说有很多种不同的数据结构。用于web开发中的数据结构,就像前面书籍的例子一样,是由我们的需求决定的。
现在我们知道了,不同的需求还需要依赖不同的数据结构来实现。接下来我们还应该知道,当使用和创建这些数据结构时,并不需要什么高深的编码知识,所有人哪怕是刚入门的小菜鸟都可以创建它。对于前端程序员来讲,只需要了解常用的JavaScript基本类型(例如:Boolean)和引用类型(例如:Object)。
如果即使我这样解释对你来说也比较难,别担心,通常我会想象有一个集合,这是一种数据结构,就像一个集合一样,啊哈,多么狗血的解释。首先集合不是什么东西,集合是组织数据的一种方式的名字;其次我们要知道,一个集合是用对象创建的。
目标
《JavaScript数据结构》系列技术文章,会告诉你数据结构并不是晦涩难懂的,更不是神秘的。相反,它们会使我们的生活更简单。我将在这个系列的文章中,通过介绍一到两种类似的数据结构,来证明这点。
大纲
由于有太多的数据结构需要被深入讨论,限于篇幅,我们将只探讨几种最常见也最重要的数据结构:
栈和队列
单链表和双链表链表
树(深度优先搜索和广度优先搜索)
总结
当我们完成这个系列的时候,我希望你不仅学会了如何实现这些常见的数据结构,而且还能够灵活的运用到自己的项目中。
当你意识到数据结构在组织数据时所发挥的作用时,会对它更加钟爱,甚至你会开始用另外一种思路,来考虑应该怎样组织你的数据。
欢迎扫描二维码关注公众号,每天推送我翻译的技术文章。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。