2016-03-08 74 views
-1

我們使用Enqueue和Dequeue方法在C#隊列中工作。 但是有沒有辦法可以刪除隊列中的最後一項? Dequeue實際上從頂部移除了物品。從C#隊列中刪除最後一項#

+3

如果你需要這樣做,那麼你可能想使用除隊列以外的東西。 – juharr

+0

是的我的確在考慮使用一個數組...... –

+0

類似的問題,可能是有趣的:http://stackoverflow.com/q/35474938/1070452這是一個更多的提供密鑰訪問堆棧。否則,LinkedList可能比數組更有效 – Plutonix

回答

1

Queue的整個目的是從上到下走集合。如果您想要一個允許從後面移除的集合類型(或集合中的任何位置),請使用另一個集合類型,例如List<T>

+2

'清單'在從最終以外的任何位置移除物品的能力相當差。 – Servy

+0

@Servy這取決於實施。在數組列表中刪除隨機元素將導致一個新的副本,而在鏈表上它是一個O(1)操作(假設你有一個指向該確切元素的指針)。如果您必須遍歷鏈表來查找某個元素,那麼這也是一個問題。 – DoubleM

+0

@DoubleM'列表'不能有不同的實現。它是一個數組支持列表。 – Servy

0

也許你應該考慮使用Stack而不是Queue。

堆棧的工作原理類似隊列,而是的先入先出行爲堆棧用來當你需要一個後進先出解決方案爲對象

-1

像帕特里克表示隊列意思先進先出。把它看成是一個打印機隊列,打印到隊列中的第一頁是第一個打印出來的頁面。

查看使用列表而不是數組,我發現列表有點容易操縱一堆數組沒有的擴展方法。 http://www.dotnetperls.com/list

這是鏈接到如何刪除列表中的最後一項,有幾種不同的方式來完成它。

How to remove the last element added into the List?

希望這有助於!

+0

非常感謝您的所有意見,建議和意見.... –

相關問題