using System;
using System.Collections.Generic;

namespace Queue
{
	public class Tester
	{

		static void Main()
		{

			Queue<Int32> intQueue = new Queue<Int32>();


			// Zapełnianie tablicy 
			for (int i = 0; i < 5; i++)
			{

				intQueue.Enqueue(i * 5);

			}

			// Wyświetlanie zawartości kolejki
			Console.Write("Wartości kolejki intQueue:\t");
			PrintValues(intQueue);

			// Usuwanie elementu z kolejki
			Console.WriteLine(
			   "\n(Dequeue)\t{0}", intQueue.Dequeue());


			// Wyświetlanie zawartości kolejki
			Console.Write("Wartości kolejki intQueue:\t");
			PrintValues(intQueue);

			// Usuwanie z kolejki następnego elementu
			Console.WriteLine(
			   "\n(Dequeue)\t{0}", intQueue.Dequeue());

			// Wyświetlanie zawartości kolejki
			Console.Write("Wartości kolejki intQueue:\t");
			PrintValues(intQueue);

			// Wyświetlanie pierwszego elementu kolejki
			// bez usuwania go
			Console.WriteLine(
			   "\n(Peek) \t{0}", intQueue.Peek());


			// Wyświetlanie zawartości kolejki
			Console.Write("Wartości kolejki intQueue:\t");
			PrintValues(intQueue);

		}

		public static void PrintValues(IEnumerable<Int32> myCollection)
		{
			IEnumerator<Int32> myEnumerator =
			   myCollection.GetEnumerator();
			while (myEnumerator.MoveNext())
				Console.Write("{0} ", myEnumerator.Current);
			Console.WriteLine();
		}

	}
}
