LinkedList方法原始碼

2021-09-24 17:36:04 字數 1525 閱讀 2977

// 從佇列首新增元素

private void linkfirst(e e)

// 從佇列尾新增元素

void linklast(e e)

public void addfirst(e e)

public void addlast(e e)

// 作為無界佇列,新增元素總是會成功的

public boolean offerfirst(e e)

public boolean offerlast(e e)

// 在節點succ之前新增元素

void linkbefore(e e, nodesucc)

// 尋找index位置的節點

nodenode(int index) else

}// 在指定index位置處新增元素

public void add(int index, e element)

// 刪除首節點

private e unlinkfirst(nodef)

// 刪除尾節點

private e unlinklast(nodel)

// remove的時候如果沒有元素丟擲異常

public e removefirst()

// remove的時候如果沒有元素丟擲異常

public e removelast()

// poll的時候如果沒有元素返回null

public e pollfirst()

// poll的時候如果沒有元素返回null

public e polllast()

刪除隊中元素方法

// 刪除指定節點x

e unlink(nodex) else

// 如果後置節點為空

// 說明是尾節點,讓last指向x的前置節點

// 否則修改後置節點的prev為x的前置節點

if (next == null) else

// 清空x的元素值,協助gc

x.item = null;

// 元素個數減1

size--;

// 修改次數加1

modcount++;

// 返回刪除的元素

return element;

}// 刪除中間節點

public e remove(int index)

(1)linkedlist是乙個以雙鏈表實現的list;

(2)linkedlist還是乙個雙端佇列,具有佇列、雙端佇列、棧的特性;

(3)linkedlist在佇列首尾新增、刪除元素非常高效,時間複雜度為o(1);

(4)linkedlist在中間新增、刪除元素比較低效,時間複雜度為o(n);

(5)linkedlist不支援隨機訪問,所以訪問非佇列首尾的元素比較低效;

(6)linkedlist在功能上等於arraylist + arraydeque;

LinkedList 原始碼分析

linkedlist資料結構是 雙向鍊錶 先來講下單鏈表和雙向鍊錶 雙向鍊錶 單鏈表相對於雙向鍊錶來說,結構簡單。但有乙個缺點,即在單鏈表中只能通過乙個節點的引用訪問其後續節點,無法直接訪問其前驅節點,如果在單鏈表中想找到某個幾點的前驅節點,必須遍歷鍊錶,耗費時間。因此擴充套件了單鏈表,在單鏈表結構...

LinkedList原始碼分析

資料結構 linkedlist是雙向迴圈鍊錶 1.構造方法 constructs an empty list.構造乙個空的列表 public linkedlist private transient entryheader new entry null,null,null entry e eleme...

LinkedList原始碼解析

1 實現了deque,所以是雙向鍊錶,同時可以作為雙向佇列 2 未實現randomaccess,就不能隨即訪問,對於所有的資料結構都是這樣,改介面只是起到標識作用 3 實現轉殖和序列化介面 4 鍊錶就會有節點node,雙向就會有first和last節點 5 預設建構函式什麼都沒有做,鍊錶不需要初始化...