回答
處理循環隊列的最佳方法是繪製它們。由於圓形不能很好地展現ASCII藝術,我將使用線性數組。
+---+---+---+---+---+
| | | | | |
+---+---+---+---+---+
0 1 2 3 4
^
Rear
後的索引爲4
讓我們執行由步驟的操作步驟。
第一:將REAR加1。這使得REAR點陣列超越:
+---+---+---+---+---+
| | | | | |
+---+---+---+---+---+
0 1 2 3 4 5
^
Rear
運用模運算,%,這會給我們的5/5
它是一個零餘數:
+---+---+---+---+---+
| | | | | |
+---+---+---+---+---+
0 1 2 3 4
^
Rear
因此,模運算陣列周圍包裹,像一個圓圈。
下一個問題是給你解決的。請記住繪製數組或隊列。你可以使用圈子(想想餡餅切片或披薩切片)。
編輯1:模詳述
模運算將給予的範圍0..N的值,當N是除數。
給定N == 4,這裏有一些結果模:
Index result
0 0
1 1
2 2
3 3
4 0 --> The remainder of 4/4 == 0.
5 1
6 2
7 3
8 0 --> The remainder of 8/4 == 0.
謝謝先生的解釋......我非常感謝你。我現在得到了這個隊列的流程.. – Edie 2014-10-18 19:06:53
記得點擊複選標記。 – 2014-10-18 19:56:58
模返回兩個操作數的剩餘部分。例如,4%2=0
自4/2=2
以來沒有剩餘部分,而4%3=1
自從4/3=1
以及其餘部分1.由於您永遠不會有高於右操作數的餘數,因此您對0
到(n-1)
的任何模數都有有效的「範圍」答案。考慮到這一點,只需插入變量的編號((4+1)%5=?
和(1+1)%4=?
)。通常要找到餘數要使用長整數,但要記住的一件有用的事情是任何除數自己的數字都有0的餘數,任何數字除以更大的數字都會有一個等於它自己的餘數。
Ohhhh ..我記得現在,謝謝你的解釋先生。很高興你來這裏幫忙。我現在明白了這個問題..對不起。 ^^ – Edie 2014-10-18 19:03:08
- 1. 使用mod的循環隊列大小
- 2. 操作隊列cocos2d
- 3. 使用代理,操作和隊列
- 4. 操作隊列中的跟蹤操作
- 5. 適用於iOS應用的操作隊列和調度隊列
- 6. JSP MOD操作不工作
- 7. 操作<<在隊列
- 8. 動態隊列操作
- 9. 在.NET中使用暫停使用的操作隊列
- 10. oozie中Hive操作的作業隊列
- 11. 使用陣列的循環隊列操作
- 12. 隊列C++的操作符重載
- 13. 沒有得到操作計數的操作隊列
- 14. Mod操作員不在C工作
- 15. 使用Cassandra作爲隊列
- 16. 無符號長長的MOD操作
- 17. iOS:如何使用操作隊列下載大量數據?
- 18. 如何使用任務隊列稍後執行某些操作?
- 19. 在主隊列中使用Sqlite和UI操作
- 20. Alamofire和併發操作隊列
- 21. dispatch_after將操作放入隊列中嗎?
- 22. 隊列異步任務操作?
- 23. 讀取文件和操作隊列
- 24. DeadlineExceededException和DataStore /任務隊列操作
- 25. MOD操作比乘法更耗CPU嗎?
- 26. 使用BLPOP的redis作業隊列
- 27. 使用Google PubSub的作業隊列
- 28. 使用pthread的工作隊列
- 29. 這是操作隊列完成塊的正確用法嗎?
- 30. Python使用列表操作
你的問題也困惑我的大腦。我看不到隊列和發佈的問題之間的相關性。你能提供更多的上下文嗎? – honk 2014-10-18 18:52:04
@honk我不知道如何回答這個問題(參考圖片)。 Exp,REAR =(REAR = 4; N = 5)後REAR =(REAR + 1)%N的值是什麼? (N)是最大隊列大小。 – Edie 2014-10-18 18:57:13
請閱讀@Namfuak的答案。他給出了足夠的解釋,以便你能夠自己解決方程。 – honk 2014-10-18 19:03:28