document.write('
Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. using System.Collections.Generic;
  2. using Microsoft.VisualStudio.TestTools.UnitTesting;
  3.  
  4. namespace MyCodeSnippets.CodingInterview.Chapter3_StacksAndQueues
  5. {
  6.     [TestClass]
  7.     public class Task_3_4_MyQueueWithTwoStacks
  8.     {
  9.         [TestMethod]
  10.         public void BasicTest()
  11.         {
  12.             var queue = new MyQueue<int>();
  13.  
  14.             // Sequence: 1, 2, 3, 4
  15.             queue.Enqueue(1);
  16.             queue.Enqueue(2);
  17.             queue.Enqueue(3);
  18.             queue.Enqueue(4);
  19.  
  20.             var val = queue.Dequeue();
  21.             Assert.AreEqual(1, val);
  22.             val = queue.Dequeue();
  23.             Assert.AreEqual(2, val);
  24.  
  25.             queue.Enqueue(5);
  26.             val = queue.Dequeue();
  27.             Assert.AreEqual(3, val);
  28.             val = queue.Dequeue();
  29.             Assert.AreEqual(4, val);
  30.  
  31.             queue.Enqueue(6);
  32.             queue.Enqueue(7);
  33.             queue.Enqueue(8);
  34.  
  35.             Assert.AreEqual(5, queue.Dequeue());
  36.             Assert.AreEqual(6, queue.Dequeue());
  37.             Assert.AreEqual(7, queue.Dequeue());
  38.             Assert.AreEqual(8, queue.Dequeue());
  39.         }
  40.     }
  41.  
  42.     public class MyQueue<T>
  43.     {
  44.         private Stack<T> IntroStack = new Stack<T>();
  45.         private Stack<T> OutroStack = new Stack<T>();
  46.  
  47.         public void Enqueue(T item)
  48.         {
  49.             IntroStack.Push(item);
  50.         }
  51.  
  52.         public T Dequeue()
  53.         {
  54.             if (OutroStack.Count > 0)
  55.             {
  56.                 return OutroStack.Pop();
  57.             }
  58.  
  59.             while (IntroStack.Count > 0)
  60.             {
  61.                 OutroStack.Push(IntroStack.Pop());
  62.             }
  63.  
  64.             return OutroStack.Pop();
  65.         }
  66.     }
  67. }
');