我打算寫一個鏈表操做的系列,來自 Codewars 的 Linked List 系列 kata ,實現語言是 JavaScript 。這篇是開篇,簡單描述了一下我寫這個的目的,也做爲系列的目錄。git
個人年度目標之一就是學習一些數據結構和算法,用於打基礎和培養邏輯思惟能力。Codewars 上的這個系列同時符合這兩點。github
鏈表是經常使用數據結構之一,它甚至是某些語言(好比 Elixir)的內置數據結構。經過本身實現一個鏈表和經常使用操做,能夠加深理解這類數據結構的優缺點。算法
鏈表常常用來訓練指針操做,雖然這隻對 C 適用,但 JavaScript 等高級語言中控制引用的思路其實也差很少。並且鏈表也是練習遞歸的理想數據結構之一。segmentfault
基於此,每一個 kata 我都會盡可能提供遞歸和循環兩個版本,某些操做會實現尾遞歸以符合題目要求。這是一個頗有意思的過程,有時候遞歸更好,有時候循環更好,也有少數時候二者都不是最優化的方案。數據結構
Codewars 上沒有總綱,但每個 kata 都有整個系列的目錄。我列舉以下,一共 18 個 kata 。每篇的博客連接會在更新後附上。另外,全部代碼 都放在 GitHub 上,代碼的更新比博客要快,若是以爲對你有幫助,請幫我點個贊!數據結構和算法