迴圈佇列有關操作

2021-07-25 21:14:12 字數 731 閱讀 4366

**求表長:(q.rear-q.front+maxqsize)%maxqsize;

為什麼要加上乙個maxqsize?**

因為會有一種情形 比如 佇列是0~5,maxsize應該是6,隊首指向3,隊尾指向1,此時佇列長度應該是4,但是用qrear- qfront = -2,顯然不是佇列的長度,所以要加上 6, 在對maxsize求餘,才可以算出來.

判空:q.rear==q.front;

約定為頭指標指向尾指標;

佇列滿:(q.rear+1)%maxqsize==q.front;

尾指標下乙個位置是頭指標;

插入:(q.rear+1)%maxqsize;

刪除:(q.front+1)%maxqsize.

有關模取問題:便於解決由最大下標位置移到到0下標時的越界處理。

例:假設有maxqsize=60(0~59)的乙個陣列,儲存乙個滿迴圈佇列q

隊列為空時,初始化q.front=q.rear=0

隊列為滿時:q.front=0,q.rear=59

ps:這裡我們可以**為什麼要對maxqsize取餘求模,詳如下:

如果不取餘:q.rear+1=59+1=60,陣列中最大下標為59而無60顯然不取餘是不對的

取餘後:(q.rear+1)%maxqsize=(59+1)%60=60%60=0,而q.front=0,因此可以構成判斷。

迴圈佇列操作

1.首先分配迴圈佇列的位址空間,用q表示,分配好頭指標 尾指標。int init queue q,m,rear,front,s int q int m int rear int front int s 2.往佇列中加入成員資料 用 s判斷佇列是否滿?如果不滿資料進佇列,尾指標移動乙個單位 void ...

雙端佇列 有序佇列

一開始給出了乙個由小寫字母組成的字串 s。我們規定每次移動中,選擇最左側的字母,將其從原位置移除,並加到字串的末尾。這樣的移動可以執行任意多次返回我們移動之後可以擁有的最小字串 注 在python3中,字串的大小可用不等號比較 from pythonds.basic.deque import deq...

幾道和 堆疊 佇列 有關的面試演算法題

問題描述 給定乙個只包括 的字串,判斷字串是否有效。解題思路 這道題讓我們驗證輸入的字串是否為括號字串,包括大括號,中括號和小括號。這裡我們使用棧。動畫演示 20.valid parentheses 實現 class solution else if issym stack.peek achar e...