順序表和鏈表的比較

一.順序表:
1.1.從空間角度:
分配方式:靜態分配
存儲密度:爲1
1.2.從時間角度:
存取方式:隨機存取
操作:插入刪除:O(N) ; 按序訪問:O(1);

二.鏈表:
2.1.從空間角度:
分配方式:動態分配
存儲密度:小於1
2.2.從時間角度:
存取方式:順序存取

三.順序存儲的優點:
1.方便簡單,各種高級語言中都有數組,容易實現;
2.不用爲表示結點間的邏輯關係而增加額外的存儲開銷;
3.順序表具有按元素序號隨機訪問的特點,非常簡介便利。

四.順序存儲的缺點:
1.在順序表中做插入,刪除操作時,平均移動大約表中一半的元素,因此n較大的順序表這兩種運算效率低;
2.需要預先分配足夠大的存儲空間,估計過大,可能會導致順序表後部大量閒置;預先分配過小,又會造成溢出;

五.鏈表的主要優點:
1.無須事先了解線性表的長度;
2.允許線性表的長度有很大變化;
3.能夠適應經常插入,刪除內部元素的情況;
4.通過建立雙向或循環鏈表提高訪問效率;

六.存儲結構的選擇:
1.基於存儲的考慮:
順序表的存儲空間是靜態分配的,在程序執行之前必須明確規定它的存儲規模,即事先對”MAXSIZE”要有合適的設定,過大造成浪費,過小造成溢出。在對線性表的長度或存儲規模難以估計時,不宜採用順序表;鏈表不用事先估計存儲規模。
2.基於運算的考慮:
如果經常做的運算是按序號訪問數據元素,顯然順序表優於鏈表;在順序表中做插入,刪除時,平均移動表中一半的元素,當數據元素的信息量較大且表較長時,這一點是不應該忽視的;在鏈表中做插入,刪除,雖然也要找插入位置,但操作主要是比較操作,從這個角度考慮顯然鏈表優於順序表。
3.基於環境的考慮:
順序表容易實現,任何高級語言中都有數組類型,鏈表的操作是基於指針的,相對來講前者簡單些。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章