public void Empty() { LinkedListToy <int> list = new LinkedListToy <int>(); C02Q01.RemoveDupes(list); Assert.Null(list.Head); }
public void CtorParams() { LinkedListToy <string> L = new LinkedListToy <string>("apple", "banana"); Assert.Equal("apple", L.Head.Data); Assert.Equal("banana", L.Head.Next.Data); Assert.Equal(null, L.Head.Next.Next); }
public void TwoElements() { LinkedListToy <int> list = new LinkedListToy <int>(7, 7); C02Q01.RemoveDupes(list); Assert.NotNull(list.Head); Assert.Equal(7, list.Head.Data); Assert.Null(list.Head.Next); }
public void SingleElement() { LinkedListToy <int> list = new LinkedListToy <int>(1); C02Q01.RemoveDupes(list); Assert.NotNull(list.Head); Assert.Equal(1, list.Head.Data); Assert.Null(list.Head.Next); }
public void NoDupes() { LinkedListToy <int> list = new LinkedListToy <int>(7, 8, 9); C02Q01.RemoveDupes(list); Assert.NotNull(list.Head); Assert.Equal(7, list.Head.Data); Assert.Equal(8, list.Head.Next.Data); Assert.Equal(9, list.Head.Next.Next.Data); Assert.Null(list.Head.Next.Next.Next); }
public void BasicLL() { LinkedListToy <string> L = new LinkedListToy <string>(); Assert.Equal(null, L.Head); L.Append("apple"); L.Append("banana"); Assert.Equal("apple", L.Head.Data); Assert.Equal("banana", L.Head.Next.Data); Assert.Equal(null, L.Head.Next.Next); }
public void ShortTest() { LinkedListToy <int> list = new LinkedListToy <int>(1, 2, 2, 3, 1); C02Q01.RemoveDupes(list); var node = list.Head; int[] expectedOutcome = { 1, 2, 3 }; foreach (int i in expectedOutcome) { Assert.Equal(i, node.Data); node = node.Next; } Assert.Null(node); }
public static void RemoveDupes(LinkedListToy <int> list) { HashSet <int> seen = new HashSet <int>(); Node <int> prev = null; Node <int> curr = list.Head; while (curr != null) { if (!seen.Contains(curr.Data)) { seen.Add(curr.Data); prev = curr; } else { // prev cannot be list.Head prev.Next = curr.Next; } curr = curr.Next; } }