常规数组: 数组元素内容是一种类型的元素,如const arr = [1,2,3,4],在存储空间是连续内存的
JS数组: 数组元素内容不是同一种类型的元素,如const arr = ['haha', 1, {a:1}],则在存储上是一段非连续空间。此时,JS 数组不再具有数组的特征,其底层其实是由链表来实现的
总结
链表的插入/删除效率较高,而访问效率较低;
数组的访问效率较高,而插入效率较低
先来了解一个基础知识
b=a,但改变 b,并不会影响 a
y=x , 但改变y,会影响x,因为class有原型链
1=>2=>3,链表是由一组节点组成的集合。每个节点都使用一个对象的引用指向它的后继,指向另一个节点的引用叫做链
给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点 。
输入:head = [1,2,6,3,4,5,6] val = 6
输出:[1,2,3,4,5]
题目描述:
给定一个排序的链接列表,删除所有具有重复数字的节点,从原始列表中只留下不同的数字。
例如, 给定1->2->3->3->4->4->5,返回1->2->5。
给定1->1->1->2->3,返回2->3。
JavaScript 版数据结构与算法(三)链表
可以看出JavaScript中的链表是通过不断 new 出来节点,并在节点的next属性上继续 new 创建出来的
结构大概长这样:
参考资料:
https://github.com/chihungyu1116/leetcode-javascript