如果我想將一個值從一個隊列移動到一個堆棧(值不應該再在隊列中,就在堆棧中),在推送它之前是否需要將它退出隊列到堆棧,還是將它推到堆棧上自動出隊?將一個值從一個隊列移動到一個堆棧
0
A
回答
1
如果您的實現是標準隊列和堆棧,那麼您需要將其出隊以將其從隊列中移除。單獨推入另一個堆棧的操作不會將其從隊列中移除。但是,爲了首先獲得價值,您可能已將其出列。
對於例如,如果您使用的是Queue
Python模塊,然後Queue.get()
將刪除和從隊列中返回一個項目。但是這一行爲與將價值推向堆棧無關。
實施例使用一個雙端隊列deque
collections
從:
>>> stack = [1,2,3]
>>> stack
[1, 2, 3]
>>> from collections import deque
>>> queue = deque(['foo', 'bar', 'baz'])
>>> queue.append('one')
>>> queue.append('two')
>>> stack.append('foo')
>>> stack
[1, 2, 3, 'foo']
>>> queue
deque(['foo', 'bar', 'baz', 'one', 'two'])
注意,只是將相同的值到堆棧將沒有任何作用到還包含'foo
隊列中。 (即使id('foo')
可以是相同的!)
然而,明確從隊列彈出foo
會從隊列中刪除:
>>> stack.append(queue.popleft())
>>> queue
deque(['bar', 'baz', 'one', 'two'])
>>> stack
[1, 2, 3, 'foo']
0
你的描述基本上將意味着一個項目的第二個設計永遠只能是同時在一個集合中。這將是相當尷尬的使用。通常,集合(堆棧和隊列)應該能夠存儲任何類型的對象而不影響對象的狀態。
所以,是的,在隊列和/或堆棧的任何理智的實現中,向其中添加項目不會將其從後者中移除。
相關問題
- 1. 將數據從一個隊列移動到另一個隊列
- 2. 如何將內容從一個堆棧移動到另一個堆棧?
- 3. 將控件從一個堆棧面板移動到另一個堆棧面板
- 4. 將卡從一堆移動到另一個從一個陣列移動到另一個陣列javascript
- 5. 將郵件從一個出站隊列移動到另一個出站隊列
- 6. 如何將呼叫從一個隊列轉移到另一個隊列?
- 7. 將隊列數據移動到另一個隊列的頭部
- 8. 將項目從一個列表移動到另一個列表
- 9. 將項目從一個列表移動到另一個列表
- 10. 將對象從一個陣列移動到另一個陣列
- 11. 將UserControl移動到頁堆棧中的另一個父頁
- 12. 我想實現一個隊列,將反轉堆棧和打印堆棧FIFO?
- 13. 連接兩個堆棧(在另一個上面一個堆棧)
- 14. 從一個函數移動一個值到另一個
- 15. 移動一個字符串從一個列表到另一個
- 16. 無法將項目從一個隊列排隊到另一個隊列
- 17. 爲什麼使用兩個堆棧來創建一個隊列?
- 18. 在兩個堆棧隊列中創建一個toString
- 19. 將值從一個數組移動到另一個PHP
- 20. 將重複值從一個ArrayList移動到另一個ArrayList(Java)
- 21. 將值從一個表格移動到另一個表格
- 22. rightBarButtonItem似乎堆疊時,從一個viewController移動到另一個
- 23. Hornetq:使用jmx管理將消息從隊列移動到另一個隊列
- 24. 如何自動將一個對象從一個隊列傳遞到另一個隊列
- 25. 如何使用python boto庫將SQS消息從一個隊列移動到另一個隊列?
- 26. 是否可以將MQ消息從一個隊列移動到另一個隊列?
- 27. 將堆棧的值分配給另一個堆棧
- 28. 將一個對象從一個數組列表移動到另一個
- 29. 將一個列表視圖項從一個組移動到另一個
- 30. 從一個JFrame移動到另一個
謝謝你的回答,這有助於澄清我對兩個ADT的不確定性。 :) –
@ user1727148很高興幫助:) –