佇列滿了的情況就兩種:
(1) [尾部指標 - 首部指標] == [陣列的長度 - 1]
(2)[首部 - 尾部] = 1. 如果要問為啥等於一,因為再加一下就追尾了 =。=
隊列為空怎麼判斷? 那就是看是否滿足初識賦值情況唄,滿足就是四大皆空的空。
考慮特殊性。
第一:佇列是否滿了,滿肯定加不了。
第二:是否是第一次加元素?(第一次那麼珍貴肯定得慎重啊,為嘛
呢?因為初始兩個指標都指向-1啊,你得將「頭」動起來才能拿到第一
次啊,不,新增第乙個元素,?)。第三: 就是判斷是否可迴圈添
加元素了?什麼情況可以重新新增呢?就是前面的完事了出去了,
尾部的隊伍還排到陣列的尾部了,這時候就可以頭部插入元素了。
剩下的就是一般性考慮了,不斷在尾部++賦值
還是考慮特殊性:
第一,空了的話肯定出不來啊。
第二,如果首部指標等於尾部指標那麼需要將指標恢復到初始情況。
第三:頭部指標插到低了,這時需要將其拔出,恢復至頭部節點。
一般性: head++
最後,**如下:
public
class
mycircularqueue
/** insert an element into the circular queue. return true if the operation is successful. */
public
boolean
enqueue
(int value)
if(tail ==
(queue.length -1)
&& head >0)
if(isempty()
) queue[
++tail]
= value;
return
true;}
/** delete an element from the circular queue. return true if the operation is successful. */
public
boolean
dequeue()
if(head - tail ==0)
if(head ==
(queue.length -1)
) head++
;return
true;}
/** get the front item from the queue. */
public
intfront()
/** get the last item from the queue. */
public
intrear()
/** checks whether the circular queue is empty or not. */
public
boolean
isempty()
/** checks whether the circular queue is full or not. */
public
boolean
isfull()
}
佇列 基於迴圈陣列的實現
description 請完成以下佇列類的實現 請注意陣列實現應該為迴圈陣列 enum errorcode success,underflow,overflow const int maxqueue 100 template class myqueue public myqueue bool emp...
佇列 陣列實現 迴圈佇列
1 陣列佇列.cpp 定義控制台應用程式的入口點。2 3 include4 include5 include abs 6 include7 include8 using namespace std 9 10 定義乙個佇列的結構體11 struct myqueue12 17 18 規則說明 19 nh...
陣列實現迴圈佇列
1 動態陣列型別 typedef struct qnode queue 1 分配結構體內存與陣列記憶體 queue initialize1 相應main函式 int main 2 只分配陣列記憶體不分配結構記憶體 int initialize2 queue q 相應main函式 int main 2...