数据结构与算法这个内容很多人一听都会觉得头大,我在最开始接触到的时候也是云里雾里。因为大一刚学编程的时候,一直连入门都如不进去,导致后来学习数据结构和算法也提不起兴趣。直到开始接触Web前端,学习了JavaScript这门脚本语言,便想学习一些基于JS的数据结构与算法知识,并且记录下来。
一、概述
数据结构分为线性结构与非线性结构,我觉得线性结构相对于非线性结构更好理解一些。而在线性结构中,链表属于相对较复杂的一种数据结构。
我们先简要提一下数组。数组是最简单最基本的结构,其每一个元素在内存中连续存放。我们可以通过数组下标index任意取得自己想要的元素。
不同于数组,链表中的元素在内存中不连续存放,这点非常重要。虽然其存放并不连续,链表中的每一个节点也有迹可循,即每个节点是和其前一个节点直接相连的。因此,我们要取得链表中的任意一个节点,必须通过从链表的第一个元素开始依此查找,直到找到我们所需要的节点。这就像是我们要爬到山顶但没有地图,我们需要从起始点开始,根据路标来找到下一个地点,最终到达目的地。
链表的几个特点:
1. 链表元素在内存中不连续存放
2. 链表的最后一个节点始终指向null
下面来说说JS中的链表创建。JS是一种基于对象的语言。在JS中,我们描述链表中的节点,需要指明一个节点对象node,这个节点包含两部分:节点的内容element和它指向下一个节点的指针next:
所以一个链表就是这样:
二、链表结构的JavaScript描述