1. 程式人生 > 其它 >LinkedList-常用方法以及雙向連結串列的理解

LinkedList-常用方法以及雙向連結串列的理解

連結串列是一種物理儲存單元上非連續、非順序的儲存結構。

連結串列

連結串列是一種物理儲存單元上非連續、非順序的儲存結構,資料元素的邏輯順序是通過連結串列中的指標連結次序實現的。 連結串列由一系列結點(連結串列中每一個元素稱為結點)組成,結點可以在執行時動態生成。每個結點包括兩個部分:一個是儲存資料元素的資料域,另一個是儲存下一個結點地址的指標域。 由於不必須按順序儲存,連結串列在插入的時候可以達到O(1)的複雜度。

與陣列相比

優點: 插入資料快 不需要預先知道資料大小 可以充分利用計算機記憶體空間 缺點: 隨機讀取速度慢,定址花時間 空間開銷比較大,因為增加了結點的指標域

雙向連結串列

雙向連結串列示意圖:

在頭部新增元素:

操作邏輯:新頭部元素的nest指向就頭部元素的地址,舊頭部元素的prev指向新頭部元素的地址

在尾部新增元素:

操作邏輯:新尾部元素的prev指向舊尾部元素的地址,舊尾部元素的nest指向新尾部元素的地址

在非頭尾處新增元素:

操作邏輯:插入元素的prev指向前面元素的地址,插入元素的nest指向後面元素的地址


LinkedList

Java中的linkedList底層正是使用了雙向連結串列結構。

LinkedList 繼承了 AbstractSequentialList 類,實現了 List 介面,此外也實現了Queue、Cloneable、Serializable 等介面。

提供的常用方法

方法描述
public boolean add(E e) 連結串列末尾新增元素,返回是否成功,成功為 true,失敗為 false。
public void add(int index, E element) 向指定位置插入元素。
public boolean addAll(Collectionc) 將一個集合的所有元素新增到連結串列後面,返回是否成功,成功為 true,失敗為 false。
public boolean addAll(int index, Collectionc) 將一個集合的所有元素新增到連結串列的指定位置後面,返回是否成功,成功為 true,失敗為 false。
public void addFirst(E e) 元素新增到頭部。
public void addLast(E e) 元素新增到尾部。
public boolean offer(E e) 向連結串列末尾新增元素,返回是否成功,成功為 true,失敗為 false。
public boolean offerFirst(E e) 頭部插入元素,返回是否成功,成功為 true,失敗為 false。
public boolean offerLast(E e) 尾部插入元素,返回是否成功,成功為 true,失敗為 false。
public void clear() 清空連結串列。
public E removeFirst() 刪除並返回第一個元素。
public E removeLast() 刪除並返回最後一個元素。
public boolean remove(Object o) 刪除某一元素,返回是否成功,成功為 true,失敗為 false。
public E remove(int index) 刪除指定位置的元素。
public E poll() 刪除並返回第一個元素。
public E remove() 刪除並返回第一個元素。
public boolean contains(Object o) 判斷是否含有某一元素。
public E get(int index) 返回指定位置的元素。
public E getFirst() 返回第一個元素。
public E getLast() 返回最後一個元素。
public int indexOf(Object o) 查詢指定元素從前往後第一次出現的索引。
public int lastIndexOf(Object o) 查詢指定元素最後一次出現的索引。
public E peek() 返回第一個元素。
public E element() 返回第一個元素。
public E peekFirst() 返回頭部元素。
public E peekLast() 返回尾部元素。
public E set(int index, E element) 設定指定位置的元素。
public Object clone() 克隆該列表。
public IteratordescendingIterator() 返回倒序迭代器。
public int size() 返回連結串列元素個數。
public ListIteratorlistIterator(int index) 返回從指定位置開始到末尾的迭代器。
public Object[] toArray() 返回一個由連結串列元素組成的陣列。
publicT[] toArray(T[] a) 返回一個由連結串列元素轉換型別而成的陣列。