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

2021-07-06 01:54:13 字數 586 閱讀 5689

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

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

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

總的來說,在可以確定佇列長度最大值的情況下,建議用迴圈佇列;

如果無法預估佇列的長度,則用鏈佇列。

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

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

佇列(迴圈佇列 鏈佇列)

迴圈佇列 cirqueue.h 名稱 迴圈佇列 基於陣列 templateclass cirqueue q size 1 多申請乙個位置,保證隊滿 對空容易判定!cirqueue void enter datatype data 入隊操作 datatype shift 出隊操作 datatype g...

09 迴圈佇列與鏈佇列

一 佇列與迴圈佇列 嵌入式 小j的天空 1.佇列 1 佇列 queue 是只允許在一端進行插入操作 而在另一端進行 刪除操作 的線性表。佇列是一種先進先出 fiirst in first out 的線性表,簡稱fifo。允許插入的一端稱為隊尾,允許刪除的一端稱為隊頭。從佇列的定義可知,佇列的入隊操作...

佇列 迴圈佇列與鏈隊

2.鏈隊 注意 佇列也是線性表,其特殊性在於有特殊的運算規則。即 隊結構只能在一端進行插入,該操作端稱為隊尾,另一端刪除元素,該操作端稱為隊頭。按照 先進先出 first in first out,fifo 原則處理資料節點。之所以用迴圈對列,就是了為了提高利用率。要不然每刪除乙個元素,對頭就空了乙...