1. 程式人生 > >資料結構第三章棧和佇列的比較

資料結構第三章棧和佇列的比較



棧和佇列的比較

1.棧:僅在表尾進行插入和刪除操作的線性表;具有後進先出的特性。

後進先出的缺點:減少了棧操作的靈活性

~~~~~~~~的優點:使得棧的操作更有效更容易實現。

2.根據儲存結構劃分,棧可分為:順序棧和鏈棧。

3.順序棧的本質是對順序表的簡化,它可實現兩棧共享空間。

4.鏈棧通常用單鏈表表示,其結點結構與單鏈表的結點結構相同。鏈棧基本操作的實現本質上是單鏈表基本操作的簡化。

5.順序棧和鏈棧的比較:實現順序棧和鏈棧的所有基本操作的演算法都只需要常數時間,因此唯一可以比較的是空間效能。初始順序棧必須確定一個固定的長度,所以有儲存元素個數限制和表浪費的問題。鏈棧沒有棧滿的問題,只有當記憶體沒有可用空間時才會出現棧滿,但是每個元素都需要一個指標域,從而產生了結構性開銷。所以當棧的使用過程中元素個數變化較大時,用鏈棧是適宜的;反之,應該採用順序棧。

6.佇列:只允許在一端進行插入操作,在另一端進行刪除操作的線性表,具有先進先出的特性。

7.佇列根據儲存結構可分為:順序儲存的迴圈佇列和連結儲存的鏈佇列。

8.鏈佇列是在單鏈表的基礎上做了簡單的修改,其基本操作的實現本質上也是單鏈表操作的簡化,除解構函式外,演算法的時間複雜度為O(1)

9.迴圈佇列和鏈佇列的比較:實現迴圈佇列和鏈佇列的基本操作的演算法都需要常數時間O(1)。迴圈佇列和鏈佇列的空間效能的比較與順序棧和鏈棧的空間效能比較類似,只是迴圈佇列不能像順序棧那樣共享空間,通常不能在一個數組中儲存兩個迴圈佇列。