資料結構之迴圈佇列詳解

2021-09-29 21:19:29 字數 768 閱讀 9166

佇列是一種運算受限的線性表。所謂的運算受限主要是指插入操作限定在表的某一端(隊尾)進行,刪除操作限定在表的另一端(對頭)進行。佇列通常也被稱為先進先出(fifo)的線性表。

佇列通常有兩種儲存結構,即順序儲存結構和鏈式儲存結構。順序儲存結構的佇列通常稱為順序佇列。

注意:queue_max_size表示佇列所能容納的元素個數。front表示對頭索引,rear表示隊尾索引。

接下來讓我們來看一幅圖,通過圖來分析順序佇列存在的問題。

從上圖中的(d)可以看出***如果不做其他調整的話***,顯然不能再做入佇列操作了,然而佇列中並沒有放滿,這種現象就叫做***假溢位***。

通常解決假溢位有兩種方式。

方法一:出隊時,將佇列中的其他元素往對頭方向移動。

方法二:迴圈佇列。

方法一比較浪費時間,因為出隊時,排在該出隊元素之後的所有元素都要向前移動,不是一種高效的方法。

終於講到重點了,由於本人嘴比較笨,還是上圖吧。

大家看到上圖中有兩個紅色的圈了吧,乙個圈住的是「隊空」,乙個圈住的是「隊滿」。那在迴圈佇列中到底如何判斷隊空和隊滿呢?

隊空:front == rear;

隊滿:front ==(rear + 1)% queue_max_size

資料結構之迴圈佇列

資料結構之佇列 迴圈佇列 ide vs2010 佇列操作 初始化 入隊 插入隊尾 出隊 即取隊頭 判斷佇列是否非空 滿 include using namespace std define max len 100 定義節點型別 typedef struct queue queue 初始化 void ...

資料結構之迴圈佇列

4.10 佇列的定義 佇列定義 一種先進先出的線性表。允許插入的一端稱為隊尾,允許刪除的一端稱為隊頭。隊頭 隊尾 出佇列 a1 a2 a3 a4 an 入佇列 佇列有類似線性表的各種操作,不同的就是插入資料只能在隊尾進行,刪除資料只能在隊頭進行。線性表有線性儲存和鏈式儲存。棧是線性表,有這兩種儲存方...

資料結構之迴圈佇列

怎麼理解上面這段話呢?就是說在現實生活的數個人排隊辦理業務,辦完業務的人自然就走了,後邊的人會往前頂。但是在程式設計中,是死的,他不會自動往前頂。因而迴圈佇列就出現了。其實就是像上段話說的解決 中資料不會自動往前頂,會出現前邊已經空了,但是插不進資料的問題。怎麼解決的呢?資料不會往前頂,但是尾部指標...