都屬於線性表,都是線性結構
順序表(順序儲存)
優點:支援隨機訪問、儲存密度高
缺點:大片連續空間分配不方便,改變容量不方便
鍊錶(鏈式儲存)
優點:離散的小空間分配方便,改變容量方便
缺點:不可隨機訪問,儲存密度低
創銷、增刪改 查
順序表(順序儲存)
需要預分配大片連續空間。若分配空間過小,則之後不方便拓展容量;若分配空間過大,則浪費記憶體資源
靜態分配:靜態陣列
動態分配:動態陣列(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 組成的有限序列。順序表和煉表,是線性表的不同儲存結構。它們各自有不同的特點和適用範圍。針對它們各自的缺點,也有很多改進的措施。順序表一般表...
鍊錶和順序表習題(一)
鍊錶順序表 每個元素的訪問 每個節點都需要通過指標找到記憶體然後載入到快取中 記憶體訪問時,不需要多次從記憶體到快取的步驟 頭插,頭刪,中間位置 直接增加或刪除節點 在插入或刪除之前要先對之後的資料進行挪動 尾插,尾刪 需要對空間進行操作 直接對資料進行操作,空間是之前一次性開闢好的 空間操作 每次...