[TOC]
# 線性結構

鏈表Linked List
數據存儲在節點(node)中
* 最簡單的動態數據結構
* 深入的理解引用(或者指針)
* 深入的理解遞歸
~~~
class Node {
E e; //存放的元素
Node next; //指向下個元素
}
~~~
最后一個元素是指向null

優點:真正的動態,不需要處理固定容量的問題
缺點:喪失了隨機訪問的能力,不能像數組那樣給個索引就能訪問
# 數組和鏈表的對比
* 數組最好用于索引有語意的情況.`scores[2]`
* 最大的有點:支持快速查詢
* 鏈表不適合用于索引有語義的情況
* 最大的優點:動態
# 添加元素
## 鏈表頭添加

~~~
node.next = head
head = node
~~~
## 鏈表中間添加元素

找到要添加的節點是前一個節點
但是頭部是沒有前一個節點的
還有順序很重要
<br>
如果我們這樣寫
~~~
prev.next = node
node.next = prev.next
~~~
node就指向自己了,就不對了
## 為鏈表設立虛擬頭節點

這樣有了虛擬節點,我們在添加頭部就不需要特殊處理了,這樣每個元素都有頭節點了
# 刪除元素

還要為了能被gc,delNode要把他置為null
~~~
prev.next = delNode.next
~~~