用 JavaScript 实现链表操做 - 前言和目录

TL;DR

我打算写一个链表操做的系列,来自 Codewars 的 Linked List 系列 kata ,实现语言是 JavaScript 。这篇是开篇,简单描述了一下我写这个的目的,也做为系列的目录。git

为何要学习链表

个人年度目标之一就是学习一些数据结构和算法,用于打基础和培养逻辑思惟能力。Codewars 上的这个系列同时符合这两点。github

链表是经常使用数据结构之一,它甚至是某些语言(好比 Elixir)的内置数据结构。经过本身实现一个链表和经常使用操做,能够加深理解这类数据结构的优缺点。算法

链表常常用来训练指针操做,虽然这只对 C 适用,但 JavaScript 等高级语言中控制引用的思路其实也差很少。并且链表也是练习递归的理想数据结构之一。segmentfault

基于此,每一个 kata 我都会尽可能提供递归和循环两个版本,某些操做会实现尾递归以符合题目要求。这是一个颇有意思的过程,有时候递归更好,有时候循环更好,也有少数时候二者都不是最优化的方案。数据结构

目录

Codewars 上没有总纲,但每个 kata 都有整个系列的目录。我列举以下,一共 18 个 kata 。每篇的博客连接会在更新后附上。另外,全部代码 都放在 GitHub 上,代码的更新比博客要快,若是以为对你有帮助,请帮我点个赞!数据结构和算法

  1. Push & BuildOneTwoThree学习

  2. Length & Count优化

  3. Get Nth Nodeui

  4. Insert Nth Node指针

  5. Sorted Insert

  6. Insert Sort

  7. Append

  8. Remove Duplicates

  9. Move Node

  10. Move Node In-place

  11. Alternating Split

  12. Front back split

  13. Shuffle Merge

  14. Sorted Merge

  15. Merge sort

  16. Sorted Intersect

  17. Iterative Reverse

  18. Recursive Reverse

相关文章
相关标签/搜索