回覆列表
  • 1 # 使用者3728884842153

    首先從邏輯結構上說,兩者都是資料結構的一種,但存在區別,陣列是申請的一塊連續的記憶體空間,並且是在編譯階段就要確定空間大小的,同時在執行階段是不允許改變的,所以它不能夠隨著需要的改變而增加或減少空間大小,所以當資料量大的時候,有可能超出了已申請好的陣列上限,產生資料越界,或者是資料量很小,對於沒有使用的陣列空間,造成記憶體浪費。連結串列則是動態申請的記憶體空間,並不像陣列一樣需要事先申請好大小,連結串列是現用現申請就OK,根據需求動態的申請或刪除記憶體空間,對於的是增加或刪除資料,所以比陣列要靈活。再從物理儲存即記憶體分配上分析,陣列是連續的記憶體,對於訪問資料,可以透過下標直接讀取,時間複雜度為O(1),而新增刪除資料就比較麻煩,需要移動運算元所在位置後的所有資料,時間複雜度為O(N)。連結串列是物理上非連續的記憶體空間,對於訪問資料,需要從頭便利整個連結串列直到找到要訪問的資料,沒有陣列有效,但是在新增和刪除資料方面,只需要知道操作位置的指標,很方便可以實現增刪,教陣列比較靈活有效率。所以綜合以上,對於快速訪問資料,不經常有新增刪除操作的時候選擇陣列實現,而對於經常新增刪除資料,對於訪問沒有很高要求的時候選擇連結串列。

  • 中秋節和大豐收的關聯?
  • 眼鏡架上有一些數字,是什麼意思啊?