下面通過一張圖讓我們看清陣列和鍊錶是如何儲存集合中的資料的:
1
2無須為表示表中元素之間的邏輯關係增加額外的儲存空間;
可以方便地隨機訪問表中任一位置的元素。
缺點是:
插入和刪除運算不方便,除表尾的位置外,在表的其他位置上進行插入或刪除操作都必須移動大量元素,其效率較低;
由於陣列要求占用連續的儲存空間,儲存分配只能預先進行靜態分配。因此,當表長變化較大時,難以確定陣列的合適的大小。確定大了將造成浪費。
向鍊錶中插入或者從鍊錶中刪除一項的操作不需要移動很多項,而只涉及常數個節點的鏈的改變。
缺點是:
在刪除最後一項比較複雜,因為必須找出指向最後節點的項,把它的next鏈改為null,然後再更新持有最後節點的鏈。
其無法提供隨機訪問能力,單向鍊錶只可向乙個方向遍歷。
而雜湊是一種用於以常數平均時間執行插入、刪除和查詢的技術。但是那些需要元素間任何排序資訊的操作將不會得到有效支援。
public static int hash(string key,int tablesize)
123
4567
8910
鍊錶基礎1
大學時就沒學好鍊錶這一部分內容,今天在leetcode上又重新遇到了鍊錶相關的問題,於是便把鍊錶這部分內容拿出來複習鞏固一下,歡迎各位大佬批評指正。首先用一段示例 class listnode public static listnode buildlistnode int array else r...
java基礎之鍊錶與陣列 1
鍊錶與陣列的區別 鍊錶的特性是在中間任意位置新增刪除元素的都非常的快,不需要移動其它的元素。鍊錶顧名思義,要把各個元素鏈結起來才算。通常鍊錶每乙個元素都要儲存乙個指向下乙個元素的指標 單鏈表 雙鏈表的化每個元素即要儲存到下乙個元素的指標,還要儲存乙個上乙個元素的指標。迴圈鍊錶則把最後乙個元素中儲存下...
基礎篇 陣列與鍊錶
理論介紹 陣列 切片 在go語言的復合資料型別中,需要認識兩種必要的資料型別 陣列跟切片都是指一系列同一型別資料的結合。陣列中包含的每個資料被稱為陣列元素,乙個陣列包含的元素個數成為陣列的長度。不過,在go語言中陣列與切片有乙個很大的區別,陣列長度在定義後不可更改,陣列宣告的時候指定的元素個數,就是...