我知道2棧。但如何與一個?如何才能實現只有堆棧實現的隊列?
0
A
回答
6
您可以使用遞歸函數調用來彈出堆棧,然後您推送正在排隊的項目,然後當遞歸調用展開時,您可以推送彈出的內容。但這實際上是兩個堆棧,因爲系統程序計數器是一個堆棧。
1
遞歸是答案
public class QueueWithStack
{
private static Stack stackQueue;
public QueueWithStack()
{
stackQueue = new Stack();
}
public void enqueue(int entry)
{
stackQueue.add(entry);
}
//dequeue a particular element from queue
public void dequeue(int entry)
{
int popInt;
if (!stackQueue.isEmpty())
{
popInt = stackQueue.pop();
if (popInt != entry)
{
dequeue(entry)
stackQueue.push(popInt);
}
}
return;
}
public void dequeueFIFO()
{
if (!stackQueue.isEmpty())
{
int popInt = stackQueue.pop();
if (!stackQueue.isEmpty())
{
deququeFIFO();
stackQueue.push(popInt);
}
}
}
}
調用主,創造了QueueWithStack對象,並增加從這個「隊列」移除整數將允許用戶推項目到隊列中,並從訪問任何項目隨時在隊列中,以及按FIFO順序從隊列中刪除項目。
+0
謝謝!好主意! – user144600
相關問題
- 1. 如何實現兩個堆棧隊列
- 2. 使用2個隊列實現堆棧
- 3. 使用2堆棧實現隊列
- 4. 使用只有一個堆棧實現優先級隊列
- 5. 堆棧實現
- 6. 優先隊列堆實現
- 7. 使用堆隊列實現
- 8. 如何在VHDL中實現堆棧/隊列等數據結構?
- 9. 隊列和堆棧通常如何實現?
- 10. 如何在java中實現堆棧和隊列?
- 11. C++堆棧實現
- 12. Java:用一個隊列實現堆棧,有什麼問題?
- 13. 實現無堆棧的Python
- 14. 堆棧的數組實現
- 15. C中的堆棧實現
- 16. 使用C中的兩個堆棧實現隊列
- 17. 實現堆棧和隊列操作的時間複雜性
- 18. 使用兩個堆棧實現隊列奇怪的錯誤
- 19. 隊列實現
- 20. 我想實現一個隊列,將反轉堆棧和打印堆棧FIFO?
- 21. 在MySQL中實現堆棧
- 22. 在java中實現堆棧
- 23. 在C++中實現堆棧
- 24. 簡單堆棧實現
- 25. Python TCP堆棧實現
- 26. 在C++中實現堆棧
- 27. 在c中實現堆棧
- 28. 使用BST實現堆棧
- 29. 通用堆棧實現
- 30. 用Python實現堆棧
我不認爲這是可能的(有1個堆棧) – Shashwat
這是不可能的,無論如何,它會使用一個二進制樹或馬鈴薯搗碎器中的一個烤架來實現一個行數組。 –