在說鏈表以前,先來康康基本數據結構--數組--
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
注:
鏈表的優勢:
鏈表的缺點: