Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- namespace QueueDataStructure
- {
- internal class Node
- {
- internal int value;
- internal Node next;
- }
- public class Queue
- {
- private Node head;
- private int size;
- public Queue(){}
- public void Enqueue(int n)
- {
- if(head == null) // queue is empty
- {
- head = new Node{
- value = n,
- next = null
- };
- }
- else // queue has items
- {
- var oldHead = head;
- head = new Node
- {
- value = n,
- next = oldHead
- };
- }
- size++;
- }
- public int? Dequeue()
- {
- if (size == 0)
- return null;
- var node = head;
- Node previous = node;
- while (node.next != null)
- {
- previous = node;
- node = node.next;
- }
- previous.next = null;
- size--;
- return node.value;
- }
- public int Count
- {
- get { return size; }
- }
- public string PrintElements()
- {
- var node = head;
- int[] elements = new int[size];
- int i = 0;
- while (node != null)
- {
- elements[i++] = node.value;
- node = node.next;
- }
- return string.Join(" ", elements);
- }
- }
- }
- using Microsoft.VisualStudio.TestTools.UnitTesting;
- using QueueDataStructure;
- namespace TestQueue
- {
- [TestClass]
- public class Tests
- {
- [TestMethod]
- public void TestQueue()
- {
- var queue = new Queue();
- Assert.AreEqual(0, queue.Count);
- Assert.AreEqual(null, queue.Dequeue());
- queue.Enqueue(1);
- queue.Enqueue(2);
- queue.Enqueue(3);
- Assert.AreEqual(3, queue.Count);
- Assert.AreEqual("3 2 1", queue.PrintElements());
- Assert.AreEqual(1, queue.Dequeue());
- Assert.AreEqual(2, queue.Dequeue());
- Assert.AreEqual(3, queue.Dequeue());
- Assert.AreEqual(0, queue.Count);
- }
- }
- }
- public void Enqueue(int n)
- {
- Node node = head;
- head = new Node
- {
- value = n,
- next = node
- };
- size++;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement