TL;DR

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

为什么要学习链表

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

链表是常用数据结构之一,它甚至是某些语言(比如 Elixir)的内置数据结构。通过自己实现一个链表和常用操作,可以加深理解这类数据结构的优缺点。

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

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

目录

Codewars 上没有总纲,但每一个 kata 都有整个系列的目录。我列举如下,一共 18 个 kata 。每篇的博客链接会在更新后附上。另外,所有代码 都放在 GitHub 上,代码的更新比博客要快,如果觉得对你有帮助,请帮我点个赞!

  1. Push & BuildOneTwoThree

  2. Length & Count

  3. Get Nth Node

  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

评论
载入中...
darkbaby123 darkbaby123

828 声望

发布于专栏

David Chen 的编程大杂烩

前端,后端,编程技巧,各种被坑经验,无所不包(其实就是想什么放什么)

17 人关注

SegmentFault

一起探索更多未知

下载 App