資料結構之順序表和煉表的比較

2021-10-07 21:53:18 字數 1158 閱讀 9107

線性表分為順序儲存和鏈式儲存兩種方式。

順序表可以分為順序訪問,也可以隨機訪問,鍊錶只能從表頭順序訪問元素。例如在第i個位置上執行存或取的操作,順序表僅需一次訪問,而鍊錶則需從表頭開始依次訪問i次。

採用順序儲存時,邏輯上相鄰的元素,對應的物理儲存位置也相鄰。而採用鏈式儲存時,邏輯上相鄰的元素,物理儲存位置則不一定相鄰,對應的邏輯關係時通過指標鏈結來表示的。

對於按值查詢,順序表無序時,兩者的時間複雜度均為o(n);順序表有序時,可採用折半查詢,此時的時間複雜度為o(log2n)。

對於按序號查詢,順序表支援隨機訪問,時間複雜度僅為o(1),而鍊錶的平均時間複雜度為o(n)。順序表的插入,刪除操作,平均需要移動半個表長的元素。鍊錶的插入,刪除操作,只需修改相關結點的指標域即可。由於鍊錶的每個結點都帶有指標域,故而儲存密度不夠大。

順序儲存在靜態儲存分配情形下,一旦儲存空間裝滿就不能擴充,若再加入新元素,則會出現儲存溢位。因此需要預先分配足夠達到儲存空間。預先分配過大,可能會導致順序表後部大量閒置;預先分配過小,又會造成溢位。動態儲存分配雖然儲存空間擴充,但需要移動大量元素,導致操作效率降低,而且若記憶體中沒有更大塊的連續儲存空間,則會導致分配失敗。鏈式儲存結點空間只在需要時申請分配,只能記憶體有空間就可以分配,操作靈活,高效。

1. 基於儲存的考慮

難以估計線性表的長度或儲存規模時,不宜採用順序表;鍊錶不用事先估計儲存規模,但鍊錶的儲存密度較低,顯然鏈式儲存結構的儲存密度是小於1的。

2. 基於運算的考慮

在順序表中按序號訪問ai的時間複雜度為o(1),而鍊錶中按序號訪問的時間複雜度為o(n),因此若經常做的運算是按序號訪問資料元素,則顯然順序表優於鍊錶。

在順序表中進行插入,刪除操作時,平均移動表中一半的元素,當資料元素的資訊量較大且表較長時,這一點時不應該被忽略的;在鍊錶中進行插入,刪除操作的時候,雖然也要找插入位置,但操作主要是進行比較,從這個角度考慮顯然後者優於前者。

3. 基於環境的考慮

順序表容易實現,任何高階語言中都有陣列型別;鍊錶的操作是基於指標的,相對來講,前者實現比較簡單,這也是使用者考慮的乙個因素。

總體而言,兩種儲存結構各有優點,選擇哪一種實際問題的主要因素決定。通常較穩定的線性表選擇順序儲存,而對於插入和刪除操作較多的線性表(也就是動態性較強)的適合選擇鏈式儲存。

(資料結構) 順序表和煉表的比較

1.儲存方式的比較 順序表的儲存空間是一次性分配好的了,而鍊錶的儲存空間是多次分配的。2.儲存密度 節點值域所佔儲存量 節點結構所佔的儲存總量 順序表的密度是等於1的,而鍊錶的密度是小於1的 1.訪問方式 順序表可以隨機抽取,也可以順序抽取 但是鍊錶只可以順序抽取 讀取第n個元素,那麼就必須遍歷其之...

資料結構之順序表和煉表

1.線性表 線性表 linear list 是n個具有相同特性的資料元素的有限序列。線性表是一種在實際中廣泛使用的資料結構,常見的線性表 順序表 鍊錶 棧 佇列 字串 線性表在邏輯上是線性結構,也就說是連續的一條直線。但是在物理結構上並不一定是連續的,線性表在物 理上儲存時,通常以陣列和鏈式結構的形...

資料結構之線性表(順序表 鍊錶)

線性表是資料結構的一種,乙個線性表是n個具有相同特性的資料元素的有限序列。線性表的邏輯結構簡單,便於實現和操作。線性表的特徵 1 線性表是乙個序列 2 n 0時,線性表是乙個空表 3 線性表中的第乙個元素無前驅,最後乙個元素無後繼,其他元素有且只有乙個前驅和後繼。4 線性表是有長度的,其長度就是元素...