鍊錶儲存,順序儲存

2021-07-25 20:02:28 字數 1878 閱讀 4241

已下**

1、鏈式儲存結構

的儲存空間在邏輯上是連續的,但是在物理上是離散的;而順序儲存結構

的儲存空間在邏輯上是連續的,在物理上也是連續的。

2、鏈式儲存儲存密度小,但空間利用率較高;順序儲存儲存密度大,但空間利用率較低。

3、順序結構優點是可以隨機讀取元素,缺點是插入和刪除元素要移動大量元素,它的儲存空間固定,可擴充套件性差;對鏈式儲存而言,插入和刪除元素開銷小,操作簡便。可擴充套件性強。缺點是不適合查詢。

(綜上所述,如果元素個數已知,且插入刪除較少的可以使用順序結構,而對於頻繁有插入刪除操作,元素個數未知的,最好使用鏈式結構,程式設計時可結合要處理的資料的特點設計資料結構的。)

以上為我個人總結。

以下**

一:順序表的特點是邏輯上相鄰的資料元素,物理儲存位置也相鄰,並且,順序表的儲存空間需要預先分配。

它的優點是:

(1)方法簡單,各種高階語言中都有陣列,容易實現。

(2)不用為表示節點間的邏輯關係而增加額外的儲存開銷。

(3)順序表具有按元素序號隨機訪問的特點。

缺點:(1)在順序表中做插入、刪除操作時,平均移動表中的一半元素,因此對n較大的順序表效率低。

(2)需要預先分配足夠大的儲存空間,估計過大,可能會導致順序表後部大量閒置;預先分配過小,又會造成溢位。

二、在鍊錶中邏輯上相鄰的資料元素,物理儲存位置不一定相鄰,它使用指標實現元素之間的邏輯關係。並且,鍊錶的儲存空間是動態分配的。

鍊錶的最大特點是:

插入、刪除運算方便。

缺點:(1)要占用額外的儲存空間儲存元素之間的關係,儲存密度降低。儲存密度是指乙個節點中資料元素所佔的儲存單元和整個節點所佔的儲存單元之比。

(2)鍊錶不是一種隨機儲存結構,不能隨機訪問元素。

三、順序表與鍊錶的優缺點切好相反,那麼在實踐應用中怎樣選取儲存結構呢?通常有以下幾點考慮:

(1)順序表的儲存空間是靜態分配的,在程式執行之前必須明確規定它的儲存規模,也就是說事先對「maxsize」要有合適的設定,設定過大會造成儲存空間的浪費,過小造成溢位。因此,當對線性表的長度或儲存規模難以估計時,不宜採用順序表。然而,鍊錶的動態分配則可以克服這個缺點。鍊錶不需要預留儲存空間,也不需要知道表長如何變化,只要記憶體空間尚有空閒,就可以再程式執行時隨時地動態分配空間,不需要時還可以動態**。因此,當線性表的長度變化較大或者難以估計其儲存規模時,宜採用動態鍊錶作為儲存結構。

但在鍊錶中,除資料域外海需要在每個節點上附加指標。如果節點的資料佔據的空間小,則鍊錶的結構性開銷就占去了整個儲存空間的大部分。當順序表被填滿時,則沒有結構開銷。在這種情況下,順序表的空間效率更高。由於設定指標域額外地開銷了一定的儲存空間,從儲存密度的角度來講,鍊錶的儲存密度小於1.因此,當線性表的長度變化不大而且事先容易確定其大小時,為節省儲存空間,則採用順序表作為儲存結構比較適宜。

(2)基於運算的考慮(時間)

順序儲存是一種隨機訪問的結構,而鍊錶則是一種順序訪問結構,因此它們對各種操作有完全不同的演算法和時間複雜度。例如,要查詢線性表中的第i個元素,對於順序表可以直接計算出a(i)的的位址,不用去查詢,其時間複雜度為0(1).而鍊錶必須從煉表頭開始,依次向後查詢,平均需要0(n)的時間。所以,如果經常做的運算是按序號訪問資料元素,顯然順表優於鍊錶。

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

(3)基於環境的考慮(語言)

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

總之,兩種儲存結構各有長短,選擇哪一種由實際問題中的主要因素決定。通常「較穩定」的線性表,即主要操作是查詢操作的線性表,適於選擇順序儲存;而頻繁做插入刪除運算的(即動態性比較強)的線性表適宜選擇鏈式儲存。

順序表的 鏈式儲存(鍊錶)

一.單鏈表節點的型別定義 typedef int elemtype typedef struct node lnode,linklist lnode h,p linklist h,p 其中 p 表示p指向的節點 p data p data表示p指向節點的資料域 p next p next表示p指向節...

順序表儲存,檔案儲存

include include include include using namespace std class student 根據student類中成員函式的申明和程式執行結果分析,完成成員函式的定義 bool student operator student stu ostream oper...

鍊錶的順序儲存和鏈式儲存的區別

順序儲存就是順序表 鏈式儲存就是鍊錶 基於空間的比較 1.儲存分配方式 順序表的儲存空間是一次性分配的,且是連續的儲存空間 鍊錶的儲存空間是多次分配的,不需要是連續的 2.儲存密度 儲存密度 結點值域所佔的儲存量 結點結構所佔的儲存空間的總量 順序表的儲存密度 1,鍊錶的儲存密度小於1 結點中包含指...