20140617 陣列和鍊錶的區別

2022-04-30 23:39:22 字數 561 閱讀 4163

邏輯結構方面:

陣列:靜態申請的連續的記憶體空間,編譯階段確定空間大小,執行階段是不允許改變

鍊錶:動態申請的記憶體空間,並不像陣列一樣需要事先申請好大小,鍊錶是現用現申請就ok,根據需求動態的申請或刪除記憶體空間,對於的是增加或刪除資料,所以比陣列要靈活。

物理儲存即記憶體分配方面:

陣列是連續的記憶體,通過下標直接讀取資料,而新增刪除資料就比較麻煩,需要移動運算元所在位置後的所有資料,時間複雜度為o(n)。

鍊錶是物理上非連續的記憶體空間,對於訪問資料,需要從頭便利整個鍊錶直到找到要訪問的資料,沒有陣列有效,但是在新增和刪除資料方面,只需要知道操作位置的指標,很方便可以實現增刪,教陣列比較靈活有效率。

所以綜合以上,對於快速訪問資料,不經常有新增刪除操作的時候選擇陣列實現,而對於經常新增刪除資料,對於訪問沒有很高要求的時候選擇鍊錶

2、

陣列和鍊錶

陣列名代表陣列的首位址,陣列的下標其實代表陣列中某個元素相對首位址的偏移量,陣列的第乙個元素是零偏移,因此從 0 開始。上面其實也只是乙個解釋,c 語言設計者用零開始編號,後來的各種語言也便紛紛效仿,因此就形成了這個習慣。單鏈表只支援乙個方向的訪問,第乙個節點稱為頭結點,最後乙個節點稱為尾結點。迴圈...

陣列和鍊錶

術語 在講述陣列和鍊錶之前,我們先了解乙個術語 索引和大o表示法。索引指元素的位置,因此我們不說 元素20的位置為1 而說 元素20位於索引1處 大o表示法指出演算法的速度有多快,演算法執行時間的增速。如o n 中的n指的是 運算元 也就是演算法執行時操作了幾次。有鑑於此,我們不僅要知道演算法需要多...

陣列和鍊錶

陣列名代表陣列的首位址,陣列的下標其實代表陣列中某個元素相對首位址的偏移量,陣列的第乙個元素是零偏移,因此從 0 開始。上面其實也只是乙個解釋,c 語言設計者用零開始編號,後來的各種語言也便紛紛效仿,因此就形成了這個習慣。單鏈表只支援乙個方向的訪問,第乙個節點稱為頭結點,最後乙個節點稱為尾結點。迴圈...