翻譯:瘋狂的技術宅
英文:https://code.tutsplus.com/tut...
說明:本文翻譯自系列文章《Data Structures With JavaScript》,總共爲四篇,原做者是在美國硅谷工做的工程師 Cho S. Kim。javascript初次翻譯,若是存在問題歡迎指出和探討。前端
說明:本專欄文章首發於公衆號:jingchengyideng 。java
一直以來,我都認爲「數據結構」這個術語是使人困惑的。它究竟是什麼,是「做用於數據的結構」嗎?這一樣是一個模棱兩可的術語。程序員
當我和同伴們分享本身的困惑時,他們很快就會說:「有結構的數據」。滿意的表情出如今他們臉上,這讓我懷疑本身甚至懷疑人生。我想這就是本身應該知道的。web
最後我仍是搞清楚了數據結構的概念,那就簡單的把術語「數據結構」稱爲「數據的結構」。這樣,咱們就把焦點從「數據」(一件事)轉移到了「結構」(組織)。這是一個微妙但很是重要的細節。換句話說,咱們再也不關注事物自己,而是關注如何組織事物的過程。數據結構
讓咱們想象一下,假設咱們討論的東西都是書籍。那麼怎樣作纔是合理的呢?是書籍的結構,仍是書籍的組織方式呢?在我看來,後者更容易理解。重點在於怎樣組織而不是書籍自己。ide
書籍,就像數據同樣,能夠用多種方式組織起來。假如咱們有20本書,那麼應該怎樣組織它們呢?編碼
若是咱們想要在書架上很快的找到一本參考書,不妨這樣作:把全部的書都按照字母順序排列在書架上,當你須要某一本書時,就能夠很快的找到它,由於咱們知道書籍是按照字母表的順序擺放的。spa
若是咱們想按照一個特定的順序閱讀全部的書,好比從第一本讀到最後一本,那麼咱們就應該按照這種順序把書放置在書架上,而且還須要制定一個規則來約束這種閱讀順序。翻譯
若是咱們沒有足夠的空間把全部的書全都放在一塊兒,就須要一種可以快速找到它們的方式進行組織。好比:家裏的不一樣位置散落着20本書,咱們就須要一個有兩列的表格,其中第一列列出書的標題,第二列列出其對應的位置。
到這裏咱們應該已經清楚了,組織書籍的方法有不少,換句話說有不少種不一樣的數據結構。用於web開發中的數據結構,就像前面書籍的例子同樣,是由咱們的需求決定的。
如今咱們知道了,不一樣的需求還須要依賴不一樣的數據結構來實現。接下來咱們還應該知道,當使用和建立這些數據結構時,並不須要什麼高深的編碼知識,全部人哪怕是剛入門的小菜鳥均可以建立它。對於前端程序員來說,只須要了解經常使用的JavaScript基本類型(例如:Boolean)和引用類型(例如:Object)。
若是即便我這樣解釋對你來講也比較難,別擔憂,一般我會想象有一個集合,這是一種數據結構,就像一個集合同樣,啊哈,多麼狗血的解釋。首先集合不是什麼東西,集合是組織數據的一種方式的名字;其次咱們要知道,一個集合是用對象建立的。
《JavaScript數據結構》系列技術文章,會告訴你數據結構並非晦澀難懂的,更不是神祕的。相反,它們會使咱們的生活更簡單。我將在這個系列的文章中,經過介紹一到兩種相似的數據結構,來證實這點。
因爲有太多的數據結構須要被深刻討論,限於篇幅,咱們將只探討幾種最多見也最重要的數據結構:
棧和隊列
單鏈表和雙鏈錶鏈表
樹(深度優先搜索和廣度優先搜索)
當咱們完成這個系列的時候,我但願你不只學會了如何實現這些常見的數據結構,並且還可以靈活的運用到本身的項目中。
當你意識到數據結構在組織數據時所發揮的做用時,會對它更加鍾愛,甚至你會開始用另一種思路,來考慮應該怎樣組織你的數據。
歡迎掃描二維碼關注公衆號,天天推送我翻譯的技術文章。