public void Delete_HeadTail_02() { var hashq = new HashQueue <int>(); Assert.AreEqual(0, hashq.Count()); hashq.Enqueue(1); Assert.AreEqual(1, hashq.Peek()); Assert.AreEqual(1, hashq.PeekTail()); hashq.Delete(1); Assert.IsTrue(hashq.IsEmpty()); }
public void Delete_ReEnqueue_03() { var hashq = new HashQueue <int>(); Assert.AreEqual(0, hashq.Count()); hashq.Enqueue(1); Assert.AreEqual(1, hashq.Count()); hashq.Delete(1); Assert.AreEqual(0, hashq.Count()); hashq.Enqueue(1); Assert.AreEqual(1, hashq.Count()); }
public void Delete_Between_01() { var hashq = new HashQueue <int>(); Assert.AreEqual(0, hashq.Count()); hashq.Enqueue(1); hashq.Enqueue(2); hashq.Enqueue(3); Assert.AreEqual(1, hashq.Peek()); Assert.AreEqual(3, hashq.PeekTail()); hashq.Delete(2); Assert.AreEqual(1, hashq.Peek()); Assert.AreEqual(3, hashq.PeekTail()); }
public void Delete_DuplicateHashCode_04() { var person1 = new Person() { Name = "p1", Age = 1 }; var person2 = new Person() { Name = "p1", Age = 2 }; Assert.AreEqual(person1.GetHashCode(), person2.GetHashCode()); Assert.AreNotEqual(person1, person2); var hashq = new HashQueue <Person>(); Assert.AreEqual(0, hashq.Count()); hashq.Enqueue(person1); hashq.Enqueue(person2); Assert.AreEqual(2, hashq.Count()); Assert.IsTrue(hashq.Delete(person2)); Assert.AreEqual(1, hashq.Count()); Assert.AreSame(person1, hashq.Peek()); }
public void Find01() { var count = 1000000; var sw = new Stopwatch(); var hashq = new HashQueue <int>(); for (int i = 0; i < count; i++) { hashq.Enqueue(i); } sw.Start(); Assert.IsTrue(hashq.Delete(count - 1)); sw.Stop(); var hashqTime = sw.ElapsedMilliseconds; Console.WriteLine($"hashqTime: {hashqTime}"); sw.Reset(); var q = new Queue <int>(); for (int i = 0; i < count; i++) { q.Enqueue(i); } sw.Start(); // Queue<T>.Remove(x) and Where(x) are O(n). q.Where(x => x == count - 1).ToList(); sw.Stop(); var qTime = sw.ElapsedMilliseconds; Console.WriteLine($"qTime: {qTime}"); Assert.Less(hashqTime, qTime); Assert.Less(hashqTime, 10); }