① 在C語言中數組和鏈表有什麼區別
二者都屬於一種數據結構
從邏輯結構來看
1. 數組必須事先定義固定的長度(元素個數),不能適應數據動態地增減的情況。當數據增加時,可能超出原先定義的元素個數;當數據減少時,造成內存浪費;數組可以根據下標直接存取。
2. 鏈表動態地進行存儲分配,可以適應數據動態地增減的情況,且可以方便地插入、刪除數據項。(數組中插入、刪除數據項時,需要移動其它數據項,非常繁瑣)鏈表必須根據next指針找到下一個元素
從內存存儲來看
1. (靜態)數組從棧中分配空間, 對於程序員方便快速,但是自由度小
2. 鏈表從堆中分配空間, 自由度大但是申請管理比較麻煩
從上面的比較可以看出,如果需要快速訪問數據,很少或不插入和刪除元素,就應該用數組;相反, 如果需要經常插入和刪除元素就需要用鏈表數據結構了。
② 鏈表式存儲是什麼意思與數組存儲方式對比
鏈表
與
數組
存儲最大的區別
就在於
它是鏈式存儲,很靈活,數組在內存中是連續地址的內存空間,鏈表可以不連續,只要定義一個指針指向下一個結點就行.對鏈表的操作也是很方便的,數組某些時候很麻煩.比如刪除數組中的某個元素,如果這個元素不是最後一個元素,那就要移動其他的所有元素,而鏈表只要修改某一個結點的指針即可.鏈表動態分配內存很方便,數組就不方便了.
③ 鏈表結構與數組結構有什麼異同
不同:
鏈表是鏈式的存儲結構;數組是順序的存儲結構。鏈表通過指針來連接元素與元素,數組則是把所有元素按次序依次存儲。鏈表的插入刪除元素相對數組較為簡單,不需要移動元素,且較為容易實現長度擴充,但是尋找某個元素較為困難;數組尋找某個元素較為簡單,但插入與刪除比較復雜,由於最大長度需要再編程一開始時指定,故當達到最大長度時,擴充長度不如鏈表方便。
相同:
兩種結構均可實現數據的順序存儲,構造出來的模型呈線性結構。
④ js數組和鏈表的區別
首先從邏輯結構上說,兩者都是數據結構的一種,但存在區別,數組是申請的一塊連續的內存空間,並且是在編譯階段就要確定空間大小的,同時在運行階段是不允許改變的,所以它不能夠隨著需要的改變而增加或減少空間大小,所以當數據量大的時候,有可能超出了已申請好的數組上限,產生數據越界,或者是數據量很小,對於沒有使用的數組空間,造成內存浪費。鏈表則是動態申請的內存空間,並不像數組一樣需要事先申請好大小,鏈表是現用現申請就OK,根據需求動態的申請或刪除內存空間,對於的是增加或刪除數據,所以比數組要靈活。再從物理存儲即內存分配上分析,數組是連續的內存,對於訪問數據,可以通過下標直接讀取,時間復雜度為O(1),而添加刪除數據就比較麻煩,需要移動操作數所在位置後的所有數據,時間復雜度為O(N)。鏈表是物理上非連續的內存空間,對於訪問數據,需要從頭便利整個鏈表直到找到要訪問的數據,沒有數組有效,但是在添加和刪除數據方面,只需要知道操作位置的指針,很方便可以實現增刪,教數組比較靈活有效率。所以綜合以上,對於快速訪問數據,不經常有添加刪除操作的時候選擇數組實現,而對於經常添加刪除數據,對於訪問沒有很高要求的時候選擇鏈表。