2010-08-11 172 views

回答

39

Queue具有一個構造函數在ICollection。您可以將您的列表到隊列中使用相同的元素初始化:

var queue = new Queue<T>(list); // where 'T' is the lists data type. 
+0

是否存在非通用隊列? – zerkms 2010-08-11 23:42:04

+0

好的。實際上有一個非通用隊列,但你可能需要通用版本。我已經更新了我的答案。 – 2010-08-11 23:44:15

+0

@zerkms:'System.Collections'命名空間中有一個非泛型'Queue'類:http://msdn.microsoft.com/en-us/library/system.collections.queue.aspx – Rich 2010-08-11 23:45:05

3
var q = new Queue<Object>(); 
for(int i = 0; i < list.Count; i++) q.Enqueue(list[i]); 

也就是說,假設「相同順序」意味着要從隊列中出列的第一項應該是list [0]。

如果這意味着相反的,只要使用逆循環:for(int i = list.Count-1; i >= 0; i--)

0
var mylist = new List<int> {1,2,3}; 
var q = new Queue<int>(mylist); 
4

什麼你的意思做「相同的順序?」

如果你這樣做:

var queue = new Queue<object>(list); 

那麼隊列將在相同的順序列表,這意味着到Dequeue的調用將返回此前在list[0]居住的元素列舉了。

如果你這樣做:

var queue = new Queue<object>(list.AsEnumerable().Reverse()); 

那麼隊列會以相反的順序爲列表,這意味着到Dequeue的調用將返回此前在list[list.Count - 1]居住的元素列舉了。

+0

提及兩個方向。 – 2010-08-12 01:04:46

相關問題