Java資料結構詳解(四) LinkedList

2021-08-08 18:42:07 字數 2333 閱讀 5179

//返回鍊錶的邏輯大小

transient

int size = 0;

//頭部節點

transient nodefirst;

//尾部節點

transient nodelast;

一,無參構造器

public

linkedlist() {}

二,有引數的構造器

public

linkedlist(collection<? extends e> c)

addall(collection

public

boolean

addall(collection<? extends e> c)

addall(int index, collection

public

boolean addall(int

index, collection<? extends e> c) else

//foreach迴圈

for (object o : a)

//在鍊錶尾部插入資料,succ == null

if (succ == null) else

//size = size + numnew ;

size += numnew;

modcount++;

return

true;

}

node node(int index)

nodenode(int

index) else

}

向鍊錶中插入資料 分為三種情況 :

一,在鍊錶頭部插入資料:

public void addfirst(e e)

public

void

addfirst(e e)

private

void

linkfirst(e e)

二,在鍊錶的尾部插入資料:

public void addlast(e e)

public

boolean

add(e e)

public

void

addlast(e e)

void linklast(e e)

三,在鍊錶的中部插入資料:

public void add(int index, e element)

public

void add(int

index, e element)

void linkbefore(e e, nodesucc)

public e remove(int index) {}

public e remove(int

index)

e unlink(node x) {}

e unlink(nodex)  else 

if (next == null) else

x.item = null;

size--;

modcount++;

return element;

}

public e set(int index, e element) {}

public e set(int

index, e element)

public e get(int index) {}

public e get(int

index)

鍊錶的 get 和 set 都呼叫了方法 node(index)

而node方法內部是 迴圈遍歷陣列. 所以get和set方法比較耗時.

而remove和add 方法只是修改了 物件的引用.時間短效率高.

arraylist 和 linkedlist 相比

arraylist查詢和修改 的複雜度為o(1); 增加和刪除的時間複雜度為o(n)

linkedlist查詢和修改的時間複雜度為o(n/2),增加和刪除的時間複雜度為o(1);

java資料結構(四) 棧

樹結構是一種描述非線性關係的資料結構。對於樹的基本概念不想過多贅述,可以自行查閱相關資料,這裡主要講解一種簡單的樹結構 二叉樹。二叉樹是樹的一種特殊形式,它有n個結點,每個結點最多有兩個子結點。二叉樹的子樹仍然是二叉樹,二叉樹的兩個子樹分別是左子樹和右子樹,因此二叉樹也是有序樹。二叉樹又分為 完全二...

資料結構與演算法Java(四)跳表

1 定義 鍊錶加多級索引的結構,提高查詢效率,類似於二分查詢 時間複雜度 查詢,插入,刪除都是o logn 空間複雜度 o n 2 問題 插入資料過多時,可能出現某2個索引結點之間的資料非常多,極端情況下,跳表會退化成單鏈表 跳表的解決方式是通過隨機函式來維護平衡性。比如隨機函式生成了值k,那我們就...

Redis資料結構詳解之Hash(四)

hash資料結構累似c 中的dictionary,大家對陣列應該比較了解,陣列是通過索引快速定位到指定元素的,無論是訪問陣列的第乙個元素還是最後乙個元素,所耗費的時間都是一樣的,但是陣列中的索引卻沒有實際意義,他只是乙個位置而已。而我們在查詢某個元素時,一般都會使用有意義的字段來做索引,這就產生啦d...