2015-04-29 32 views
1

如果這個問題太簡單或已經得到解答,我很抱歉。我在這裏找不到任何類似的問題在stackoverflow上,我也不能在網上找到有用的信息。Stacks,Queue,Deque - 什麼時候使用?

我目前正在處理stack/queue/deque。我知道他們是如何行事的(LIFO,先進先出,然後deques做到這一點),但我很努力地找出目的。

  • 這3個ADT可能用於什麼?
  • 其中一個可以用於另一個更好的結果嗎?我認爲總是使用deque會很明智,因爲它提供了與隊列和堆棧相同的方法 - 我錯了嗎?
  • 性能如何(如速度)?使用它們時需要考慮什麼?
+0

在最基本的層面上(直接使用這些),我不會使用隊列來代替隊列或堆棧。使用任何一個替代堆棧意味着你永遠不能依賴它成爲一個堆棧。任何人都可以破壞堆棧的定義,爲他們提供危險的功能。 – ChiefTwoPencils

回答

3

堆棧/隊列是用於各種計算機科學領域的基本數據結構,如操作系統,計算機網絡。

像LIFO,FIFO等操作根據任務的目的(如圖形(另一種數據結構))在各種場合使用,而實現BFS使用隊列存儲進一步使用基本操作(如FIFO)的節點。

而且,速度很重要。但是,我們還需要照顧內存限制。

P.S.這些數據結構及其操作可能看起來毫不相關,但隨着您進一步研究,您會意識到許多偉大的算法都是基於這些本身。

相關問題