Advertisement
Guest User

Untitled

a guest
Mar 24th, 2017
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.25 KB | None | 0 0
  1. namespace QueueDataStructure
  2. {
  3. internal class Node
  4. {
  5. internal int value;
  6. internal Node next;
  7. }
  8.  
  9. public class Queue
  10. {
  11. private Node head;
  12. private int size;
  13.  
  14. public Queue(){}
  15.  
  16. public void Enqueue(int n)
  17. {
  18. if(head == null) // queue is empty
  19. {
  20. head = new Node{
  21. value = n,
  22. next = null
  23. };
  24. }
  25. else // queue has items
  26. {
  27. var oldHead = head;
  28. head = new Node
  29. {
  30. value = n,
  31. next = oldHead
  32. };
  33. }
  34. size++;
  35. }
  36.  
  37. public int? Dequeue()
  38. {
  39. if (size == 0)
  40. return null;
  41.  
  42. var node = head;
  43. Node previous = node;
  44. while (node.next != null)
  45. {
  46. previous = node;
  47. node = node.next;
  48. }
  49. previous.next = null;
  50. size--;
  51. return node.value;
  52. }
  53.  
  54. public int Count
  55. {
  56. get { return size; }
  57. }
  58.  
  59. public string PrintElements()
  60. {
  61. var node = head;
  62. int[] elements = new int[size];
  63. int i = 0;
  64. while (node != null)
  65. {
  66. elements[i++] = node.value;
  67. node = node.next;
  68. }
  69. return string.Join(" ", elements);
  70. }
  71. }
  72. }
  73.  
  74. using Microsoft.VisualStudio.TestTools.UnitTesting;
  75. using QueueDataStructure;
  76.  
  77. namespace TestQueue
  78. {
  79. [TestClass]
  80. public class Tests
  81. {
  82. [TestMethod]
  83. public void TestQueue()
  84. {
  85. var queue = new Queue();
  86. Assert.AreEqual(0, queue.Count);
  87. Assert.AreEqual(null, queue.Dequeue());
  88.  
  89. queue.Enqueue(1);
  90. queue.Enqueue(2);
  91. queue.Enqueue(3);
  92. Assert.AreEqual(3, queue.Count);
  93. Assert.AreEqual("3 2 1", queue.PrintElements());
  94.  
  95. Assert.AreEqual(1, queue.Dequeue());
  96. Assert.AreEqual(2, queue.Dequeue());
  97. Assert.AreEqual(3, queue.Dequeue());
  98. Assert.AreEqual(0, queue.Count);
  99. }
  100. }
  101. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement