鍊錶和順序表的區別

2021-10-08 18:28:30 字數 951 閱讀 9685

都屬於線性表,都是線性結構

順序表(順序儲存)

優點:支援隨機訪問、儲存密度高

缺點:大片連續空間分配不方便,改變容量不方便

鍊錶(鏈式儲存)

優點:離散的小空間分配方便,改變容量方便

缺點:不可隨機訪問,儲存密度低

創銷、增刪改 查

順序表(順序儲存)

需要預分配大片連續空間。若分配空間過小,則之後不方便拓展容量;若分配空間過大,則浪費記憶體資源

靜態分配:靜態陣列

動態分配:動態陣列(malloc、free )

插入/刪除元素要將後續元素都後移/前移

時間複雜度o(n),時間開銷主要來自移動元素

若資料元素很大,則移動的時間代價很高

按位查詢: 0(1)

按值查詢: o(n) 若表內元素有序,可在o(log2n)時間內找到

鍊錶(鏈式儲存)

只需分配乙個頭結點(也可以不要頭結點,只宣告乙個頭指標),之後方便拓展

依次刪除各個結點(free)

插入/刪除元素只需修改指標即可

時間複雜度0(n),時間開銷主要來自查詢目標元素

查詢元素的時間代價更低

按位查詢: 0(n)

按值查詢: 0(n)

順序錶鏈表

彈性(可擴容)差好

增刪差好查

好差表長難以預估、經常要增加/刪除元素–鍊錶

表長可預估、查詢(搜尋)操作較多–順序表

問題:請描述順序表和煉表的blablabla.實現線性表時,用順序表還是鍊錶好?

順序表和煉表的邏輯結構都是線性結構,都屬於線性表。

但是二者的儲存結構不同,順序表採用順序儲存…(特點,帶來的優點缺點);鍊錶採用鏈式儲存…(特點、導致的優缺點)。

由於採用不同的儲存方式實現,因此基本操作的實現效率也不同。當初始化時…當插入乙個資料元素時…;當刪除個 資料元素時…; 當查詢乙個資料元素時…

鍊錶和順序表

順序表一般可以分為 1 靜態順序表 使用定長陣列儲存 2 動態順序表 使用動態開闢的數值儲存 順序表的靜態儲存 define n 100 typedef int sldatatype typedef struct seqlist seqlist 順序表的動態儲存 typedef struct seq...

鍊錶和順序表的一些區別

順序表與鍊錶是非常基本的資料結構,它們可以被統稱為線性表。線性表 linear list 是由 n n 0 個資料元素 結點 a 0 a 1 a 2 a n 1 組成的有限序列。順序表和煉表,是線性表的不同儲存結構。它們各自有不同的特點和適用範圍。針對它們各自的缺點,也有很多改進的措施。順序表一般表...

鍊錶和順序表習題(一)

鍊錶順序表 每個元素的訪問 每個節點都需要通過指標找到記憶體然後載入到快取中 記憶體訪問時,不需要多次從記憶體到快取的步驟 頭插,頭刪,中間位置 直接增加或刪除節點 在插入或刪除之前要先對之後的資料進行挪動 尾插,尾刪 需要對空間進行操作 直接對資料進行操作,空間是之前一次性開闢好的 空間操作 每次...