小白演算法積累 佇列1 迴圈佇列 tag

2021-10-03 09:55:07 字數 755 閱讀 9965

題目:若希望迴圈佇列中的元素都能得到利用,則需設定乙個標誌域tag,並以tag的值為0或1來區分隊頭指標front和隊尾指標rear相同時的佇列狀態是「空」還是「滿」。

試編寫與此結構相應的入隊和出隊演算法。

關鍵字:迴圈佇列+tag的使用

思路

迴圈佇列:

需要變數:隊頭指標front,隊尾指標rear,增減元素的開關:tag

1)入隊演算法

尾插法:q.data[q.rear]=x;q.rear=(q.rear+1)%maxsize;q.tag=1

隊空條件:q.front== q.rear且q.tag==0

2)出隊演算法

頭結點刪除:x=q.data[q.front];q.front=(q.front +1)%maxsize;q.tag=0

隊滿條件:q.front == q.rear且q.tag=1

注意:當刪除之後鍊錶為空時,還需增加一步,將尾指標指向頭結點

設「tag」法的迴圈隊列入隊演算法:

int

enqueue1

(sqqueue &q, elemtype x)

設「tag」法的迴圈隊列入隊演算法:

int

dequeue1

(sqqueue &q, elemtype &x)

小白演算法積累 佇列4 無限膨脹儲存空間

題目 請設計乙個佇列,要求滿足 1 初始時隊列為空 2 入隊時,允許增加佇列占用空間 3 出隊後,出隊元素所占用的空間可重複使用,即整個佇列所占用的空間只增不減 4 入隊操作和出隊操作的時間複雜度始終保持o 1 請回答下列問題 1 該佇列是應該選擇鏈式儲存結構,還是應選擇順序儲存結構?2 畫出佇列的...

演算法基礎 迴圈佇列

迴圈佇列是一種先進先出的,首尾相連的佇列。大致的結構如下圖 用陣列來抽象的表示一下的話,如下圖 迴圈佇列有兩個指標指向資料,上圖中的start和end就是那兩個指標,它們指向相同的位置,表示的是空,即佇列是空的。隨著資料的放入,佇列一般有下面的兩種形式 需要注意第二種形式,從圖上看end在start...

資料結構與演算法 佇列(佇列 迴圈佇列 鏈式佇列)

和昨天的棧有一些類似,小孱弱弱今天分享的資料結構 佇列,那是非常有意思 顧名思義呀,佇列佇列,就是排隊呀,應該還記得棧的資料操作模式吧,僅在棧尾進行插入和刪除操作,我們的佇列呢,僅在佇列頭部刪除,佇列尾部插入,這就很清楚了吧,佇列的應用很廣泛,一定要搞清楚裡面的思想哦。進入正題 先是迴圈佇列,為什麼...