2010-08-11 18 views

Respuesta

39

Queue tiene un constructor que toma en un ICollection. Puede pasar su lista en la cola para inicializar con los mismos elementos:

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

¿Hay cola no genérica? – zerkms

+0

Buena captura. En realidad, hay una cola no genérica, pero es probable que desee la versión genérica. He actualizado mi respuesta. –

+0

@zerkms: hay una clase 'Queue' no genérica en el espacio de nombres' System.Collections': http://msdn.microsoft.com/en-us/library/system.collections.queue.aspx – Rich

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

Esto es, suponiendo "mismo orden" significa que el primer elemento que se quita de la cola de la cola debe ser lista [0].

Si significa lo contrario, sólo tiene que utilizar el bucle inverso: 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

¿Qué quiere decir por "el mismo orden?"

Si hace esto:

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

A continuación, la cola se enumerará otra vez en el mismo orden que la lista, lo que significa que una llamada a Dequeue devolvería el elemento que había residido anteriormente en list[0].

Si hace esto:

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

A continuación, la cola se enumeran en el orden en contrario ya que la lista, lo que significa que una llamada a Dequeue devolvería el elemento que había residido anteriormente en list[list.Count - 1].

+0

+1 por mencionar ambas direcciones. –

Cuestiones relacionadas