最近在接受採訪時我被問到使用循環隊列的缺點。我想不出任何。在互聯網上搜索我發現的唯一答案是難以實現比線性隊列:)。還有其他的缺點嗎?循環隊列的缺點?
Q
循環隊列的缺點?
7
A
回答
0
在我看來,那是穿越隊列將必須跟蹤的第一個節點,以檢測橫向結束的任何代碼。但是在多線程環境中,另一個線程可能會刪除第一個節點,這會導致遍歷線程進入無限循環。所以遍歷線程必須保持第一個節點在隊列週期內被鎖定。
1
我要說的循環隊列的最大缺點是隻能存儲queue.length元素。如果您將它用作緩衝區,則會限制您的歷史深度。
另一個小缺點是很難分辨一個完整的隊列空隊列,不保留其他信息。
+0
不那麼難。查看問題的評論。至少有兩種方法可以做到這一點...... – 2017-12-31 04:51:35
1
面試官在尋找可能的答案取決於一些額外的背景下,是不是在上面的問題。
例如,高度併發的生產者/消費者系統通常考慮循環隊列。當隊列滿時,隊列前後的操作可以爭用相同的緩存行,這可能會導致類似上下文中的問題。
也許面試官要你來談談它是多麼容易在一個垃圾收集的語言,使無鎖連接隊列成具有圓形基於陣列的隊列進行比較。
或者,也許這只是你如何能夠更好地利用,如果你使用線性隊列週期性轉移,而不是一個循環隊列通過您的語言提供的矢量容器。
相關問題
- 1. 循環隊列Python
- 2. PHP + MySQL的循環隊列
- 3. C++中的循環隊列
- 4. beanstalkd上的循環隊列
- 5. C#中的循環隊列#
- 6. jQuery的循環隊列
- 7. 循環隊列和循環鏈表
- 8. 循環隊列Python實現
- 9. 隊列和While循環
- 10. 循環隊列實現
- 11. 同步循環隊列
- 12. 循環隊列理論
- 13. 循環隊列大小
- 14. 消息隊列循環
- 15. 基於循環陣列的隊列
- 16. 在循環中調用realloc的缺點
- 17. Bukkit團隊循環陣列/列表Java
- 18. 作爲「FIFO隊列」的Javascript循環緩衝區隊列實現
- 19. 線性隊列和循環隊列之間的區別
- 20. 任何隊列優於循環隊列的用例?
- 21. WH_KEYBOARD的SetWindowsHookEx卡在循環/隊列中
- 22. Omnet中循環隊列的初始化
- 23. 使用mod的循環隊列大小
- 24. 使用隊列for循環(Python)的
- 25. Silverlight中的循環隊列功能
- 26. 基於範圍的循環std ::隊列
- 27. pthread_cond_wait fifo循環隊列中的死鎖
- 28. 查找循環隊列中的項目?
- 29. C中的循環隊列打印
- 30. 檢測併發隊列中的循環循環
根據實現情況,您可能必須在循環隊列中將節點留空,而可以完全填充線性隊列。沒有太大的缺點,除非每個節點都是巨大的! – asheeshr 2013-02-16 06:15:02
爲什麼節點必須留空? – 2013-02-16 08:11:27
這取決於你如何實現循環隊列。如果您將數據存儲在每個節點中,則沒有簡單的方法來區分空列表和完整列表。 – asheeshr 2013-02-16 08:14:29