前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JavaScript 数据结构(1):什么是数据结构?

JavaScript 数据结构(1):什么是数据结构?

作者头像
疯狂的技术宅
发布2019-03-28 14:35:16
4870
发布2019-03-28 14:35:16
举报
文章被收录于专栏:京程一灯

翻译:疯狂的技术宅 说明:本文翻译自系列文章《Data Structures With JavaScript》,总共为四篇,原作者是在美国硅谷工作的工程师 Cho S. Kim 。由京程一灯老编 疯狂的技术宅 翻译。今天为大家奉上本系列的第一篇。 英文:https://code.tutsplus.com/tutorials/data-structures-with-javascript-whats-a-data-structure--cms-23347

一直以来,我都认为“数据结构”这个术语是令人困惑的。它到底是什么,是“作用于数据的结构”吗?这同样是一个模棱两可的术语。

当我和同伴们分享自己的困惑时,他们很快就会说:“有结构的数据”。满意的表情出现在他们脸上,这让我怀疑自己甚至怀疑人生。我想这就是自己应该知道的。

最后我还是搞清楚了数据结构的概念,那就简单的把术语“数据结构”称为“数据的结构”。这样,我们就把焦点从“数据”(一件事)转移到了“结构”(组织)。这是一个微妙但非常重要的细节。换句话说,我们不再关注事物本身,而是关注如何组织事物的过程。

让我们想象一下,假设我们讨论的东西都是书籍。那么怎样做才是合理的呢?是书籍的结构,还是书籍的组织方式呢?在我看来,后者更容易理解。重点在于怎样组织而不是书籍本身。

不同类型的数据结构

书籍,就像数据一样,可以用多种方式组织起来。假如我们有20本书,那么应该怎样组织它们呢?

如果我们想要在书架上很快的找到一本参考书,不妨这样做:把所有的书都按照字母顺序排列在书架上,当你需要某一本书时,就可以很快的找到它,因为我们知道书籍是按照字母表的顺序摆放的。

如果我们想按照一个特定的顺序阅读所有的书,比如从第一本读到最后一本,那么我们就应该按照这种顺序把书放置在书架上,并且还需要制定一个规则来约束这种阅读顺序。

如果我们没有足够的空间把所有的书全都放在一起,就需要一种能够快速找到它们的方式进行组织。比如:家里的不同位置散落着20本书,我们就需要一个有两列的表格,其中第一列列出书的标题,第二列列出其对应的位置。

到这里我们应该已经清楚了,组织书籍的方法有很多,换句话说有很多种不同的数据结构。用于web开发中的数据结构,就像前面书籍的例子一样,是由我们的需求决定的。

现在我们知道了,不同的需求还需要依赖不同的数据结构来实现。接下来我们还应该知道,当使用和创建这些数据结构时,并不需要什么高深的编码知识,所有人哪怕是刚入门的小菜鸟都可以创建它。对于前端程序员来讲,只需要了解常用的JavaScript基本类型(例如:Boolean)和引用类型(例如:Object)。

如果即使我这样解释对你来说也比较难,别担心,通常我会想象有一个集合,这是一种数据结构,就像一个集合一样,啊哈,多么狗血的解释。首先集合不是什么东西,集合是组织数据的一种方式的名字;其次我们要知道,一个集合是用对象创建的。

目标

《JavaScript数据结构》系列技术文章,会告诉你数据结构并不是晦涩难懂的,更不是神秘的。相反,它们会使我们的生活更简单。我将在这个系列的文章中,通过介绍一到两种类似的数据结构,来证明这点。

大纲

由于有太多的数据结构需要被深入讨论,限于篇幅,我们将只探讨几种最常见也最重要的数据结构:

  • 栈和队列
  • 单链表和双链表链表
  • 树(深度优先搜索和广度优先搜索)

总结

当我们完成这个系列的时候,我希望你不仅学会了如何实现这些常见的数据结构,而且还能够灵活的运用到自己的项目中。

当你意识到数据结构在组织数据时所发挥的作用时,会对它更加钟爱,甚至你会开始用另外一种思路,来考虑应该怎样组织你的数据。

请等待下一篇:《JavaScript 数据结构(2):栈和队列》


小手一抖,资料全有。长按二维码关注京程一灯,阅读更多技术文章和业界动态。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2017-07-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 京程一灯 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档