在说链表以前,先来康康基本数据结构--数组--
node
数组:在计算机科学中,数组数据结构,简称数组,是由相同类型的元素的集合所组成的数据结构,分配一块连续的内存来存储。利用元素的索引能够计算出该元素对应的存储地址。 最简单的数据结构类型是一维数组。数组-维基百科数组
数组的特性:
数据结构
数组扩容:当数组长度不够用须要扩容时,此时须要系统从新分配一块扩容后长度的物理空间,而后将扩容前的数组元素复制到新的物理空间中,这个过程是消耗性能的。尤为是在数据量较大时,因此尽量避免发生数组扩容。性能
arr
,那么arr
其实指向的是数组的第一项的内存地址,因为在内存中数组是连续的,能够经过数组的第一项来访问整个数组中的全部元素。数组的优势:this
arr[2]
访问数组中的某个元素时,arr[n]
其中的n其实为内存地址的偏移量,在操做系统中经过偏移量来进行查询效率是最高的。数组的缺点:spa
链表:链表是一种常见的基础数据结构,是一种线性表,可是并不会按线性的顺序存储数据,而是在每个节点里存到下一个节点的指针。因为没必要须按顺序存储,链表在插入的时候能够达到O(1)的复杂度,比另外一种线性表顺序表快得多,可是查找一个节点或者访问特定编号的节点则须要O(n)的时间,而顺序表相应的时间复杂度分别是O(logn)和O(1)。链表-维基百科操作系统
链表有单链表、双链表、循环链表,这里只介绍单链表。指针
使用JavaScript来建立一个简单的链表结构:code
function Node(value) {
this.value = value;
this.next = null;
}
let node1 = new Node(1);
let node2 = new Node(2);
let node3 = new Node(3);
let node4 = new Node(4);
let node5 = new Node(5);
let head = node1;
node1.next = node2;
node2.next = node3;
node3.next = node4;
node4.next = node5;
复制代码
链表的特性:cdn
注:
链表的优势:
链表的缺点: