1. 程式人生 > >佇列---迴圈佇列與鏈佇列比較

佇列---迴圈佇列與鏈佇列比較

對於迴圈佇列與鏈佇列的比較,可以從兩方面來考慮:

1、從時間上,其實它們的基本操作都是常數時間,即都為0(1)的,不過迴圈佇列是事先申請好空間,使用期間不釋放,而對於鏈佇列,每次申請和釋放結點也會存在一些時間開銷,如果入隊出隊頻繁,則兩者還是有細微差異。

2、對於空間上來說,迴圈佇列必須有一個固定的長度,所以就有了儲存元素個數和空間浪費的問題。而鏈佇列不存在這個問題,儘管它需要一個指標域,會產生一些空間上的開銷,但也可以接受。所以在空間上,鏈佇列更加靈活

總的來說,在可以確定佇列長度最大值的情況下,建議用迴圈佇列;
如果無法預估佇列的長度,則用鏈佇列。

用陣列實現佇列時,如果不移動,隨著資料的不斷讀寫,會出現假滿佇列的情況。即尾陣列已滿但頭陣列還是空的。迴圈佇列也是一種陣列,只是它在邏輯上把陣列的頭和尾相連,形成迴圈佇列,當陣列尾滿的時候,要判斷陣列頭是否為空,不為空繼續存放資料,可以有效的利用資源。但是用迴圈佇列有個小麻煩,不好判斷數列是為空還是為滿。

鏈佇列就不存在上面的問題。“迴圈佇列”最大優點就是節省空間和少分配空間,而鏈佇列多了一點點地址儲存開銷。