1. 順序存儲結構和鏈式存儲結構的優缺點
存儲空間
順序存儲結構是要求事先分配存儲空間的,即靜態分配,所以難以估計存儲空間的大小。估計過大會造成浪費,估計太小又容易造成空間溢出。
而鏈式存儲結構的存儲空間是動態分配的,只要計算機內存空間還有空閑,就不會發生溢出。
另外還可以從存儲密度的角度考慮,存儲密度的定義公式為:一般來說,存儲密度越大,存儲空間的利用率就越高。
顯然,順序存儲結構的存儲密度為1,而鏈式存儲結構的存儲密度小於1。
運算時間
順序表是一種順序存儲結構,對表中任一結點都可以在O(1)時間復雜度下直接訪問;而訪問鏈表中的某個結點時,必須從頭指針開始沿著鏈表順序查找,時間復雜度為O(n)。
鏈表順序查找,時間復雜度為O(n)。
因此,如果對線性表的操作以查找為主,則採用順序存儲結構較好;若以插入、刪除為主,則採用鏈式存儲結構為宜。
2. 簡述順序表和鏈表的優缺點及適用范圍
順序表
長度固定,必須在分配內存之前確定數組的長度。
存儲空間連續,即允許元素的隨機訪問。
存儲密度大,內存中存儲的全部是數據元素。
要訪問特定元素,可以使用索引訪問,時間復雜度為 $O(1)$。
要想在順序表中插入或刪除一個元素,都涉及到之後所有元素的移動,因此時間復雜度為 $O(n)$。
順序表最主要的問題就是要求長度是固定的,可以使用倍增-復制的辦法來支持動態擴容,將順序表變成「可變長度」的。
這個辦法不可避免的會浪費一些內存,因為數組的容量總是倍增的。而且每次擴容的時候,都需要將舊的數據全部復制一份,肯定會影響效率。不過實際上,這樣做還是直接使用鏈表的效率要高。
3. .順序表的空間利用率高於鏈表嗎
朋友,我來告訴你答案!一般地,存儲密度越大,存儲空間的利用率就越高。顯然,順序表的存儲密度為1,而鏈表的存儲密度小於1。所以順序表的空間利用率高於鏈表。
4. 順序表和鏈表的比較
順序表的優點:
(1) 方法簡單,各種高級語言中都有數組,容易實現。
(2) 不用為表示結點間的邏輯關系而增加額外的存儲開銷。
(3) 順序表具有按元素序號隨機訪問的特點。
順序表的缺點:
(1) 在順序表中做插入刪除操作時,平均移動大約表中一半的元素,因此對n較大的順序表效率低。
(2) 需要預先分配足夠大的存儲空間,估計過大,可能會導致順序表後部大量閑置;預先分配過小,又會造成溢出。
鏈表的優點:
(1) 在鏈表中做插入刪除操作時,不會影響前面和後面的節點,因此對n較大的鏈表效率高。
(2) 不需要預先分配足夠大的存儲空間,避免造成空間閑置或溢出的情況。
鏈表的缺點:
(1) 需要進行指針操作,方法復雜。
(2) 需要為表示結點間的邏輯關系(指針變數)而增加額外的存儲開銷。
(3) 只能通過遍歷找到某個節點,不能使用下標直接定位節點。
5. 順序表和鏈表的優缺點
順序表查詢的效率高
鏈表添加刪除節點的效率高
6. 在什麼情況下用順序表比鏈表好
需要隨機訪問(按腳標訪問)數據的時候;
已知最大元素數量(即最大表長)的時候;
不需要大量插入、刪除元素操作的時候。
需要隨機訪問表中的元素的時候用順序表更好。
因為順序表中的元素都是緊挨著排列在一起的,只要知道了第一個元素的地址,在這個地址上加上一個偏移量就可以得到另一個元素。而如果是鏈表的話,訪問某個元素首先都要依次遍歷這個元素前面的所有元素,效率是很低的。
(6)鏈表和順序表的存儲效率擴展閱讀:
如順序表的每個結點佔用len個內存單元,用location (ki)表示順序表中第i個結點ki所佔內存空間的第1個單元的地址。則有如下的關系:location (ki+1) = location (ki) +len
location (ki) = location(k1) + (i-1)len
存儲結構要體現數據的邏輯結構,順序表的存儲結構中,內存中物理地址相鄰的結點一定具有順序表中的邏輯關系。
7. 順序存儲結構和鏈式存儲結構優缺點
順序存儲結構和鏈式存儲結構的區別
鏈表存儲結構的內存地址不一定是連續的,但順序存儲結構的內存地址一定是連續的;
鏈式存儲適用於在較頻繁地插入、刪除、更新元素時,而順序存儲結構適用於頻繁查詢時使用。
順序存儲結構和鏈式存儲結構的優缺點:
空間上
順序比鏈式節約空間。是因為鏈式結構每一個節點都有一個指針存儲域。
存儲操作上:
順序支持隨機存取,方便操作
插入和刪除上:
鏈式的要比順序的方便(因為插入的話順序表也很方便,問題是順序表的插入要執行更大的空間復雜度,包括一個從表頭索引以及索引後的元素後移,而鏈表是索引後,插入就完成了)
例如:當你在字典中查詢一個字母j的時候,你可以選擇兩種方式,第一,順序查詢,從第一頁依次查找直到查詢到j。第二,索引查詢,從字典的索引中,直接查出j的頁數,直接找頁數,或許是比順序查詢最快的。
8. 比較分析線性表的順序存儲與鏈式存儲的優缺點
1.空間上
順序肯定比鏈式節約空間。鏈式造成了碎片。
2.存儲操作上
順序要比鏈式的存儲方便
3.插入和刪除上
鏈式的要比順序的方便