渣渣之基於陣列實現迴圈佇列

2021-10-23 04:41:13 字數 1685 閱讀 7609

佇列滿了的情況就兩種:

(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...